Participant Demographics
ont_ctry_name
Ecuador Ghana Peru US
20 70 40 49
ont_version
ont_ctry_name 1 2
Ecuador 10 10
Ghana 35 35
Peru 21 19
US 21 28
ont_sex
ont_ctry_name . 1 2
Ecuador 0 9 11
Ghana 0 32 38
Peru 0 25 15
US 1 26 22
ont_ctry_name
tolower(ont_ethn) Ecuador Ghana Peru US
. 0 1 0 2
a little bit of everything / caucasian/ puerto rican 0 0 0 1
ahanta 0 1 0 0
akan- fante 0 1 0 0
american - hispanic / anglo 0 0 0 1
asante/akan 0 1 0 0
asian 0 0 0 1
asian + caucasian 0 0 0 1
black 0 0 0 2
black + puerto rican 0 0 0 1
caucasian 0 0 0 22
denkyiranyi (asante) 0 1 0 0
earth inn 0 0 0 1
east indian 0 0 0 1
ekuapim 0 1 0 0
fante 0 49 0 0
fante (akromah) 0 1 0 0
fante (amosima) 0 1 0 0
fante (brenu) 0 1 0 0
fante (new ebu) 0 2 0 0
fante (otum in central region) 0 1 0 0
fantenyi 0 2 0 0
fanti 0 1 0 0
fanti (cape-coast) 0 1 0 0
fanti (egyankwa) 0 1 0 0
fanti (yamoransa) 0 1 0 0
fanti(ahanta) 0 1 0 0
hispanic 0 0 0 1
hispanic / caucasian 0 0 0 1
hispanic / native american 0 0 0 1
i am a fante. 0 1 0 0
irish 0 0 0 1
irish/scottish/caucasian 0 0 0 1
italian 0 0 0 1
italian/american 0 0 0 1
kichua 1 0 0 0
mexican american 0 0 0 1
mexican/italian 0 0 0 1
mut 0 0 0 1
n. european 0 0 0 1
northner 0 1 0 0
persian 0 0 0 1
portuguese 0 0 0 1
salvadorian 0 0 0 1
scandanavian 0 0 0 1
scottish / english 0 0 0 1
shipibo 0 0 40 0
waorani 13 0 0 0
waorani and kichua 6 0 0 0
ont_ctry_name
tolower(ont_hied) Ecuador Ghana Peru US
. 1 1 0 1
0 0 1 0 0
10th grade 2 0 0 0
11th grade 5 0 0 0
12th grade 9 0 0 0
1st yr college 0 0 0 1
3 yrs college 0 0 0 1
8th grade 1 0 0 0
9th grade 1 0 0 0
abakrampa senior high school 0 1 0 0
abakrampa senior technical 0 1 0 0
abk senior high 0 1 0 0
associate 0 0 0 1
associate's 0 0 0 2
ba 1 0 0 3
ba + teaching 0 0 0 1
bacelors 0 0 0 1
bachelor of science 0 0 0 1
bachelor's 0 0 0 2
bachelors 0 0 0 3
brenu methodist school 0 1 0 0
bs 0 0 0 3
college 0 0 0 3
college grad 0 0 0 1
did not complete junior high school 0 1 0 0
doctorate 0 0 0 1
elementary 0 1 0 0
form 4 0 3 0 0
form 4 (junior secondary school) 0 1 0 0
ged 0 0 0 2
grad levels 0 0 0 1
grad school 0 0 0 1
graduate 0 0 0 1
graduated college 0 0 0 1
have not yet completed junior high school 0 1 0 0
high school 0 0 0 1
high school / some college 0 0 0 1
high school some trade school 0 0 0 1
hs 0 0 0 2
hs graduate 0 0 0 1
i have finished tertiary 0 1 0 0
j.h.s (junior high school) 0 1 0 0
jackson college of education 0 1 0 0
jhs 0 1 0 0
junior college 0 0 0 1
junior high 0 0 0 1
junior high school 0 11 0 0
junior high school graduate 0 2 0 0
masters 0 0 0 2
mba 0 0 0 1
methodist jhs 0 4 0 0
methodist senior high (new ebu) 0 1 0 0
methodists junior and senior high (new ebu) 0 1 0 0
methodists junior secondary school, class 6 0 1 0 0
methodists primary 0 1 0 0
middle school 0 1 0 0
new ebu da jhs 0 1 0 0
new ebu methodist middle school (1971) 0 1 0 0
nursing training 0 1 0 0
post-grad 0 0 0 1
primary 0 1 0 0
roman catholic girls 0 1 0 0
s.h.s 0 1 0 0
secondary school 0 1 0 0
self- hs 0 0 0 1
seminary school 0 1 0 0
senior high schol 0 1 0 0
senior high school 0 5 0 0
senior high school graduate 0 3 0 0
shs 0 3 0 0
shs- technical school 0 1 0 0
sm college 0 0 0 1
some college 0 0 0 4
stan 7 0 1 0 0
takoradi senior secondary school 0 1 0 0
uneducated 0 5 0 0
uneducated, did not attend school 0 1 0 0
university of cape coast 0 2 0 0
as.numeric(ont_imgd)
ont_ctry_name -2 -1 0 1 2
Ecuador 6 1 10 2 0
Ghana 0 1 0 13 56
Peru 0 0 3 2 34
US 15 9 5 5 13
ont_ctry_name
tolower(ont_chfq) Ecuador Ghana Peru US
. 0 1 1 2
0 15 0 1 5
1x/week 0 0 0 2
2 times a week. 0 0 1 0
2 times in a week 0 1 0 0
2x/week 0 0 0 1
3 times a month 0 0 1 0
3 times a week 0 3 2 0
3 times in a week 0 1 0 0
3 to 4 times a year 0 0 1 0
4 times a month 0 1 1 0
4 times a week 0 2 15 0
4 times in a week 0 1 0 0
4,6, 8 times a month 0 0 1 0
5 times a week 0 2 1 0
5, 6 to 7 times a year 0 0 1 0
7 times a week 0 1 0 0
8 times a month 0 0 1 0
a few times in a year 0 1 0 0
a lot of times 0 1 0 0
abundant life 0 0 0 1
cathedral of faith, jubilee church on the hill, catholic churches 0 0 0 1
catholic 0 0 0 1
every day 0 1 0 0
every saturday 0 1 0 0
every sunday 0 8 0 2
every sunday, once a week 0 1 0 0
every week 0 2 0 0
everyday 0 3 0 0
everyday in new eden 0 0 1 0
fante comment 0 3 0 0
from time to time 0 0 2 0
i don't usually go 0 2 0 0
i don't usually go. 0 1 0 0
i go to jesus divine temple. people popularly call it mountain. 0 1 0 0
infrequent 3 0 0 0
infrequent but used to preach a few years ago 1 0 0 0
it's been long 0 1 0 0
like five times in a year 0 1 0 0
lutheran prince of peace 0 0 0 1
many times 0 1 0 0
many times. 0 1 0 0
many times. every week unless i can't and then i rest. 0 1 0 0
mdata 0 0 0 1
n/a 0 0 0 12
na 0 0 0 15
not always but i go 3 times a week 0 0 1 0
not anymore 0 0 0 1
not often 0 0 0 1
now i don't go to church. 0 1 0 0
often 0 3 0 0
once a month 0 0 1 0
once a month or two months 0 1 0 0
once a week 0 0 3 0
once a year 0 0 2 0
once every 2 years 0 1 0 0
once every week 0 1 0 0
once every weekend 1 0 0 0
once in a week 0 1 0 0
once in every 2 months 0 1 0 0
once in every 2 years 0 1 0 0
sunday weekly 0 1 0 0
three times 0 1 0 0
three times in a week. 0 1 0 0
thrice in a week 0 1 0 0
twice a week 0 1 2 0
twice in every week 0 1 0 0
twice in every week. 0 1 0 0
two times a week 0 1 0 0
very often 0 3 0 0
very often. every sunday 0 1 0 0
virtually every sunday 0 1 0 0
weekly 0 2 0 2
weekly catholic 0 0 0 1
when i am in school, i go to church every day 0 1 0 0
yes, once a month 0 0 1 0
you don't go at all. 0 1 0 0
as.numeric(ont_ses)
ont_ctry_name -2 -1 0 1 2
Ecuador 0 10 9 1 0
Ghana 4 17 15 31 3
Peru 13 6 18 1 0
US 2 13 23 8 1
as.numeric(ont_affr)
ont_ctry_name 0 1
Ecuador 20 0
Ghana 23 47
Peru 30 9
US 5 43
Figure 1, Accompanying Analyses & Appendix C regression
results
The goal here is to combine confidence and existence scores. The
confidence graph above shows people’s confidence ratings regardless of
whether they said the object existed or not. So, I will combine them
this way: - if they said it doesn’t exist -1 - if they said it does
exist 1 - if they said they don’t know *0
This way, a person who said they don’t know if it exists and a person
who said it did or didn’t but said they were “not sure” will both get a
score of 0. A person who is “very sure” it doesn’t exist will get a
score of -3 and a person who is “very sure” it does exist will get a
score of 3.
Graphing Figure 1

Models predicting confidence x existence scores by category with
separate regressions for each country. The pairwise contrasts here
showing ordinary vs. supernatural and scientific vs. supernatural are
what make up Table 2. Full results are reported in Appendix C.
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 0.1076 0.175 208 0.615 0.5393
Ordinary - Supernatural 0.1367 0.156 205 0.874 0.3830
Ordinary - Fictional 2.0389 0.212 213 9.627 <.0001
Scientific - Supernatural 0.0291 0.136 210 0.214 0.8305
Scientific - Fictional 1.9313 0.197 213 9.821 <.0001
Supernatural - Fictional 1.9022 0.181 217 10.516 <.0001
Degrees-of-freedom method: kenward-roger
Model predicting confidence x existence scores by category pooling
across non-US countries. These results show that when you combine all
non-US country responses together, the difference between ordinary and
supernatural confidence ratings are significant.
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_ctry_name/ont_subj)
Data: filter(df_ext_usens_conf, ont_ctry_name != "US")
REML criterion at convergence: 1924
Scaled residuals:
Min 1Q Median 3Q Max
-4.3864 -0.4471 0.2510 0.5377 2.2025
Random effects:
Groups Name Variance Std.Dev.
ont_subj:ont_ctry_name (Intercept) 0.113627 0.33709
ont_ctry_name (Intercept) 0.003539 0.05949
Residual 0.844475 0.91895
Number of obs: 691, groups: ont_subj:ont_ctry_name, 130; ont_ctry_name, 3
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 2.72942 0.09344 3.60849 29.210 2.03e-05 ***
question_typeScientific -0.29739 0.10470 563.96137 -2.840 0.00467 **
question_typeSupernatural -0.23851 0.09985 550.18991 -2.389 0.01724 *
question_typeFictional -1.63053 0.11738 560.02347 -13.891 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) qstn_typSc qstn_typSp
qstn_typScn -0.664
qstn_typSpr -0.698 0.618
qstn_typFct -0.591 0.529 0.551
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 0.2974 0.1050 569 2.840 0.0047
Ordinary - Supernatural 0.2385 0.1010 564 2.373 0.0180
Ordinary - Fictional 1.6305 0.1180 565 13.874 <.0001
Scientific - Supernatural -0.0589 0.0903 590 -0.652 0.5144
Scientific - Fictional 1.3331 0.1080 573 12.292 <.0001
Supernatural - Fictional 1.3920 0.1060 561 13.190 <.0001
Degrees-of-freedom method: kenward-roger
Model predicting confidence x existence scores by category, but only
for highest contrast ordinary vs. supernatural items (coffee cups &
tables vs. God & demons). These results show that these highest
contrasts are significantly different in the US and Ghana, but not in
Ecuador and Peru (in Ecuador, our smallest sample size, there are hints
that this effect might be found in future similar studies). See Appendix
A for full confidence and existence ratings broken down by item,
version, and country.
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: df_ext_usens_conf %>% filter(ont_ctry_name == "US", item_code %in% c("mug", "tbl", "dem", "god"))
REML criterion at convergence: 374.1
Scaled residuals:
Min 1Q Median 3Q Max
-2.09043 0.01938 0.02299 0.58511 1.29077
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.008797 0.09379
Residual 3.134276 1.77039
Number of obs: 94, groups: ont_subj, 49
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 2.9592 0.2533 91.9994 11.68 < 2e-16 ***
question_typeSupernatural -2.2481 0.3656 48.9678 -6.15 1.38e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr)
qstn_typSpr -0.691
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: df_ext_usens_conf %>% filter(ont_ctry_name == "Ghana", item_code %in% c("mug", "tbl", "dem", "god"))
REML criterion at convergence: 291.4
Scaled residuals:
Min 1Q Median 3Q Max
-3.3442 -0.1527 -0.0012 0.5653 1.7544
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.2286 0.4781
Residual 0.2804 0.5296
Number of obs: 140, groups: ont_subj, 70
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 2.75714 0.08527 114.84211 32.333 < 2e-16 ***
question_typeSupernatural -0.30000 0.08951 69.00000 -3.352 0.00131 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr)
qstn_typSpr -0.525
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: df_ext_usens_conf %>% filter(ont_ctry_name == "Ecuador", item_code %in% c("mug", "tbl", "wen", "god"))
REML criterion at convergence: 106.7
Scaled residuals:
Min 1Q Median 3Q Max
-3.0684 -0.3950 0.1042 0.7610 1.1422
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.2511 0.5011
Residual 0.6754 0.8218
Number of obs: 39, groups: ont_subj, 20
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 2.6500 0.2152 34.6335 12.312 3.32e-14 ***
question_typeSupernatural -0.5397 0.2642 18.9685 -2.043 0.0552 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr)
qstn_typSpr -0.594
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: df_ext_usens_conf %>% filter(ont_ctry_name == "Peru", item_code %in% c("taz", "tbl", "oni", "god"))
REML criterion at convergence: 125.4
Scaled residuals:
Min 1Q Median 3Q Max
-3.2867 0.4317 0.4317 0.4471 0.7038
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.01877 0.1370
Residual 0.25314 0.5031
Number of obs: 79, groups: ont_subj, 40
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 2.750000 0.082449 76.628610 33.354 <2e-16 ***
question_typeSupernatural -0.007738 0.113272 38.128326 -0.068 0.946
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr)
qstn_typSpr -0.678
Table 3 & Accompanying Analyses
Models predicting confidence x existence scores with consensus and
sensory experience scores. The results are reported in Table 3 in the
manuscript
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ consensus_excl_self + usens_response + (1 | ont_ctry_name/ont_subj)
Data: df_ext_usens_conf
REML criterion at convergence: 2134.2
Scaled residuals:
Min 1Q Median 3Q Max
-4.2610 -0.4330 0.0861 0.3859 3.9757
Random effects:
Groups Name Variance Std.Dev.
ont_subj:ont_ctry_name (Intercept) 0.132745 0.36434
ont_ctry_name (Intercept) 0.009728 0.09863
Residual 1.040922 1.02026
Number of obs: 714, groups: ont_subj:ont_ctry_name, 177; ont_ctry_name, 4
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) -2.92816 0.21417 76.07243 -13.672 <2e-16 ***
consensus_excl_self 5.00615 0.22733 354.91570 22.022 <2e-16 ***
usens_response 0.78817 0.09002 688.50272 8.756 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) cnsn__
cnsnss_xcl_ -0.900
usens_rspns -0.099 -0.197
| Regression Results: Effects of Consensus and Sensory Evidence on Confidence |
| Characteristic |
Beta |
95% CI |
p-value |
| (Intercept) |
-2.9 |
-3.4, -2.5 |
<0.001 |
| consensus_excl_self |
5.0 |
4.6, 5.5 |
<0.001 |
| usens_response |
0.79 |
0.61, 0.96 |
<0.001 |
| Abbreviation: CI = Confidence Interval |
ALTERNATE CODING & FIG 1 et al

Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: filter(df_ext_usens_conf_ALT, ont_ctry_name == "US")
REML criterion at convergence: 735.9
Scaled residuals:
Min 1Q Median 3Q Max
-3.05877 -0.27588 0.01684 0.27397 2.88053
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.3683 0.6069
Residual 4.4209 2.1026
Number of obs: 168, groups: ont_subj, 49
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.9592 0.3126 161.8633 12.664 < 2e-16 ***
question_typeScientific -0.2245 0.4248 120.1173 -0.528 0.598
question_typeSupernatural -3.1020 0.4248 120.1173 -7.303 3.37e-11 ***
question_typeFictional -6.1828 0.5557 140.3890 -11.127 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) qstn_typSc qstn_typSp
qstn_typScn -0.679
qstn_typSpr -0.679 0.500
qstn_typFct -0.519 0.382 0.382
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 0.224 0.425 117 0.528 0.5982
Ordinary - Supernatural 3.102 0.425 117 7.303 <.0001
Ordinary - Fictional 6.183 0.558 138 11.072 <.0001
Scientific - Supernatural 2.878 0.425 117 6.774 <.0001
Scientific - Fictional 5.958 0.558 138 10.670 <.0001
Supernatural - Fictional 3.081 0.558 138 5.517 <.0001
Degrees-of-freedom method: kenward-roger
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: filter(df_ext_usens_conf_ALT, ont_ctry_name == "Ghana")
REML criterion at convergence: 1160.3
Scaled residuals:
Min 1Q Median 3Q Max
-4.5726 -0.3506 0.1818 0.4952 1.8554
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.1846 0.4296
Residual 1.4565 1.2068
Number of obs: 349, groups: ont_subj, 70
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.7571 0.1531 328.0187 24.539 <2e-16 ***
question_typeScientific -0.4260 0.1871 280.4269 -2.277 0.0235 *
question_typeSupernatural -0.3013 0.1867 280.3591 -1.614 0.1078
question_typeFictional -1.9429 0.2040 275.6218 -9.524 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) qstn_typSc qstn_typSp
qstn_typScn -0.726
qstn_typSpr -0.728 0.590
qstn_typFct -0.666 0.545 0.546
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 0.426 0.187 281 2.276 0.0236
Ordinary - Supernatural 0.301 0.187 281 1.613 0.1079
Ordinary - Fictional 1.943 0.204 276 9.524 <.0001
Scientific - Supernatural -0.125 0.169 298 -0.736 0.4621
Scientific - Fictional 1.517 0.187 281 8.106 <.0001
Supernatural - Fictional 1.642 0.187 281 8.789 <.0001
Degrees-of-freedom method: kenward-roger
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: filter(df_ext_usens_conf_ALT, ont_ctry_name == "Ecuador")
REML criterion at convergence: 324.8
Scaled residuals:
Min 1Q Median 3Q Max
-3.7139 -0.5337 0.2668 0.5260 1.7660
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.17 0.4123
Residual 1.60 1.2649
Number of obs: 96, groups: ont_subj, 20
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.6500 0.2975 88.3018 12.270 < 2e-16 ***
question_typeScientific -0.5375 0.3690 73.8784 -1.457 0.149
question_typeSupernatural -0.5322 0.3713 73.2224 -1.434 0.156
question_typeFictional -1.9014 0.4056 72.2588 -4.688 1.27e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) qstn_typSc qstn_typSp
qstn_typScn -0.729
qstn_typSpr -0.724 0.579
qstn_typFct -0.663 0.534 0.532
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 0.53746 0.370 75.2 1.454 0.1501
Ordinary - Supernatural 0.53225 0.372 74.6 1.432 0.1564
Ordinary - Fictional 1.90136 0.406 73.7 4.685 <.0001
Scientific - Supernatural -0.00521 0.342 80.4 -0.015 0.9879
Scientific - Fictional 1.36390 0.376 76.3 3.624 0.0005
Supernatural - Fictional 1.36911 0.378 74.8 3.625 0.0005
Degrees-of-freedom method: kenward-roger
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: filter(df_ext_usens_conf_ALT, ont_ctry_name == "Peru")
REML criterion at convergence: 793
Scaled residuals:
Min 1Q Median 3Q Max
-4.2876 -0.4473 0.2786 0.3683 2.6448
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.04796 0.219
Residual 1.28285 1.133
Number of obs: 253, groups: ont_subj, 40
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.7500 0.1824 247.1351 20.559 <2e-16 ***
question_typeScientific -0.1663 0.2307 215.1638 -0.721 0.472
question_typeSupernatural -0.1667 0.2068 211.7962 -0.806 0.421
question_typeFictional -2.8167 0.2691 217.8182 -10.467 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) qstn_typSc qstn_typSp
qstn_typScn -0.762
qstn_typSpr -0.850 0.672
qstn_typFct -0.653 0.518 0.576
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 0.16633 0.231 214 0.721 0.4719
Ordinary - Supernatural 0.16667 0.207 210 0.806 0.4212
Ordinary - Fictional 2.81673 0.269 217 10.459 <.0001
Scientific - Supernatural 0.00034 0.179 216 0.002 0.9985
Scientific - Fictional 2.65040 0.248 217 10.692 <.0001
Supernatural - Fictional 2.65006 0.226 219 11.718 <.0001
Degrees-of-freedom method: kenward-roger
Model predicting confidence x existence scores by category pooling
across non-US countries. These results show that when you combine all
non-US country responses together, the difference between ordinary and
supernatural confidence ratings are significant.
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_ctry_name/ont_subj)
Data: filter(df_ext_usens_conf_ALT, ont_ctry_name != "US")
REML criterion at convergence: 2293.9
Scaled residuals:
Min 1Q Median 3Q Max
-4.5239 -0.3322 0.2444 0.4483 2.0520
Random effects:
Groups Name Variance Std.Dev.
ont_subj:ont_ctry_name (Intercept) 0.1228 0.3504
ont_ctry_name (Intercept) 0.0000 0.0000
Residual 1.4453 1.2022
Number of obs: 698, groups: ont_subj:ont_ctry_name, 130; ont_ctry_name, 3
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.7385 0.1098 674.2405 34.039 < 2e-16 ***
question_typeScientific -0.3647 0.1366 571.9140 -2.671 0.00779 **
question_typeSupernatural -0.2598 0.1302 578.2497 -1.996 0.04639 *
question_typeFictional -2.1671 0.1520 566.5738 -14.255 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) qstn_typSc qstn_typSp
qstn_typScn -0.741
qstn_typSpr -0.778 0.623
qstn_typFct -0.666 0.536 0.561
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 0.365 0.137 577 2.670 0.0078
Ordinary - Supernatural 0.260 0.132 561 1.968 0.0495
Ordinary - Fictional 2.167 0.152 572 14.240 <.0001
Scientific - Supernatural -0.105 0.118 581 -0.889 0.3746
Scientific - Fictional 1.802 0.140 580 12.887 <.0001
Supernatural - Fictional 1.907 0.137 541 13.951 <.0001
Degrees-of-freedom method: kenward-roger
Model predicting confidence x existence scores by category, but only
for highest contrast ordinary vs. supernatural items (coffee cups &
tables vs. God & demons). These results show that these highest
contrasts are significantly different in the US and Ghana, but not in
Ecuador and Peru (in Ecuador, our smallest sample size, there are hints
that this effect might be found in future similar studies). See Appendix
A for full confidence and existence ratings broken down by item,
version, and country.
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: df_ext_usens_conf_ALT %>% filter(ont_ctry_name == "US", item_code %in% c("mug", "tbl", "dem", "god"))
REML criterion at convergence: 446.7
Scaled residuals:
Min 1Q Median 3Q Max
-2.03793 0.01365 0.01586 0.47946 1.31969
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.01493 0.1222
Residual 5.65089 2.3772
Number of obs: 98, groups: ont_subj, 49
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.9592 0.3400 95.9993 11.643 < 2e-16 ***
question_typeSupernatural -3.1020 0.4803 48.0380 -6.459 4.95e-08 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr)
qstn_typSpr -0.706
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: df_ext_usens_conf_ALT %>% filter(ont_ctry_name == "Ghana", item_code %in% c("mug", "tbl", "dem", "god"))
REML criterion at convergence: 314.8
Scaled residuals:
Min 1Q Median 3Q Max
-3.7306 -0.1313 0.0024 0.5628 1.5196
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.2505 0.5005
Residual 0.3438 0.5863
Number of obs: 140, groups: ont_subj, 70
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.75714 0.09214 117.17884 40.776 < 2e-16 ***
question_typeSupernatural -0.32857 0.09911 69.00000 -3.315 0.00146 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr)
qstn_typSpr -0.538
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: df_ext_usens_conf_ALT %>% filter(ont_ctry_name == "Ecuador", item_code %in% c("mug", "tbl", "wen", "god"))
REML criterion at convergence: 122
Scaled residuals:
Min 1Q Median 3Q Max
-4.0763 -0.2848 0.1576 0.7600 0.9070
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.2116 0.460
Residual 1.1538 1.074
Number of obs: 39, groups: ont_subj, 20
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.6500 0.2613 36.1945 13.969 3.76e-16 ***
question_typeSupernatural -0.6471 0.3448 19.0832 -1.877 0.0759 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr)
qstn_typSpr -0.640
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: df_ext_usens_conf_ALT %>% filter(ont_ctry_name == "Peru", item_code %in% c("taz", "tbl", "oni", "god"))
REML criterion at convergence: 163.7
Scaled residuals:
Min 1Q Median 3Q Max
-4.8913 0.2505 0.2505 0.4187 0.9844
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.08974 0.2996
Residual 0.35385 0.5948
Number of obs: 80, groups: ont_subj, 40
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.7500 0.1053 74.9330 35.610 <2e-16 ***
question_typeSupernatural -0.1000 0.1330 39.0000 -0.752 0.457
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr)
qstn_typSpr -0.632
Appendix A: Responses by object, version, and country
Confidence
US


Ghana


Ecuador


Peru


Special People
Ghana
This question was not asked in Ghana
LS0tCnRpdGxlOiAiT250b2xvZ3lfZm9ycHViIgphdXRob3I6ICJFbGVhbm9yIFNjaGlsbGUtSHVkc29uIgpkYXRlOiAiMjAyNS0wNy0zMCIKb3V0cHV0OiAKICBodG1sX2RvY3VtZW50OgogICAgICB0b2M6IHllcwogICAgICBkZl9wcmludDogcGFnZWQKICAgICAgdG9jX2Zsb2F0OiB5ZXMKICBodG1sX25vdGVib29rOgogICAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgICAgdG9jOiB5ZXMKICAgICAgdG9jX2Zsb2F0OiB5ZXMKLS0tCgojIFNldCB1cCAKCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobz1GLCB3YXJuaW5nPUYsIGNhY2hlPUYsIG1lc3NhZ2U9RikKYGBgCgpgYGB7cn0KI2xvYWRpbmcgcGFja2FnZXMKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkocmVhZHhsKQpsaWJyYXJ5KGZvcmNhdHMpCmxpYnJhcnkoUkNvbG9yQnJld2VyKQpsaWJyYXJ5KGtuaXRyKQpsaWJyYXJ5KGthYmxlRXh0cmEpCmxpYnJhcnkocHVycnIpCmxpYnJhcnkobG1lNCkKbGlicmFyeShsbWVyVGVzdCkKbGlicmFyeShlbW1lYW5zKQpsaWJyYXJ5KGd0c3VtbWFyeSkKCmxldmVsc190eXBlIDwtIGMoIk9yZGluYXJ5IiwgIlNjaWVudGlmaWMiLCAiU3VwZXJuYXR1cmFsIiwgIkZpY3Rpb25hbCIpCmxldmVsc19jb3VudHJ5IDwtIGMoIlVTIiwgIkdoYW5hIiwgIkVjdWFkb3IiLCAiUGVydSIpCmBgYAoKYGBge3J9CiNsb2FkaW5nIGRhdGEgCmRmX3JhdyA8LSByZWFkX2V4Y2VsKHBhdGggPSAib250b2xvZ3lfZGF0YS54bHN4IikKYGBgCgpgYGB7cn0KI21ha2luZyBzb21lIG1vZGlmaWNhdGlvbnMKCmRmIDwtIGRmX3JhdyAlPiUKICBtdXRhdGUob250X2N0cnlfbmFtZSA9IGNhc2Vfd2hlbigKICAgIG9udF9jdHJ5ID09IDEgfiAiVVMiLAogICAgb250X2N0cnkgPT0gNCB+ICJHaGFuYSIsCiAgICBvbnRfY3RyeSA9PSA3IH4gIlBlcnUiLAogICAgb250X2N0cnkgPT0gNiB+ICJFY3VhZG9yIiwKICAgIFRSVUUgfiBOQV9jaGFyYWN0ZXJfIAogICkpICU+JQogIHJlbG9jYXRlKG9udF9jdHJ5X25hbWUsIC5iZWZvcmUgPSBldmVyeXRoaW5nKCkpCgpgYGAKCmBgYHtyLCBpbmNsdWRlID0gRn0KI2NsZWFubHkgbG9hZGluZyBpbiBhbGwgY3VzdG9tIGZ1bmN0aW9ucyB0byBub3QgY2x1dHRlciB1cCB0aGlzIHJtZCBmaWxlIApzb3VyY2UoIi4vY3VzdG9tX2Z1bmN0aW9ucy5SIikKYGBgCgojIyBEYXRhIFdyYW5nbGluZwoKYGBge3J9CiNkZl9zZW5zIHJlcXVpcmVzIHNlbnNvcnlfdmFycywgd2hpY2ggaXMgY3JlYXRlZCBpbiB0aGUgY3VzdG9tX2Z1bmN0aW9ucy5SIGZpbGUKCiMgQ29tYmluZSBpbnRvIG9uZSBiaWcgZGZfc2VucwpkZl9zZW5zIDwtIHJlZHVjZShzZW5zb3J5X3ZhcnMsIGxlZnRfam9pbiwgYnkgPSAib250X3N1YmoiKQoKIyBSZWpvaW4gbWV0YWRhdGEKZGZfc2VucyA8LSBkZiAlPiUKICBzZWxlY3Qob250X3N1YmosIG9udF9jdHJ5X25hbWUsIG9udF92ZXJzaW9uKSAlPiUKICBsZWZ0X2pvaW4oZGZfc2VucywgYnkgPSAib250X3N1YmoiKQoKIyBkZl91c2VucyByZXF1aXJlcyB1c2Vuc192YXJzLCB3aGljaCBpcyBjcmVhdGVkIGluIHRoZSBjdXN0b21fZnVuY3Rpb25zLlIgZmlsZQoKIyBDb21iaW5lIGludG8gb25lIGJpZyBkZl9zZW5zCmRmX3VzZW5zIDwtIHJlZHVjZSh1c2Vuc192YXJzLCBsZWZ0X2pvaW4sIGJ5ID0gIm9udF9zdWJqIikKCiMgUmVqb2luIG1ldGFkYXRhCmRmX3VzZW5zIDwtIGRmICU+JQogIHNlbGVjdChvbnRfc3Viaiwgb250X2N0cnlfbmFtZSwgb250X3ZlcnNpb24pICU+JQogIGxlZnRfam9pbihkZl91c2VucywgYnkgPSAib250X3N1YmoiKQpgYGAKCmBgYHtyfQojIE5vdGUgdGhhdCB0aGlzIGlzIHRoZSBkYXRhIGZyYW1lIGluIHdoaWNoIG1hbnkgaW1wb3J0YW50IHZhcmlhYmxlcyBhcmUgY2FsY3VsYXRlZCwgaW5jbHVkaW5nIHRoZSBjb25zZW5zdXMgc2NvcmUgCmRmX2V4dF9sb25nIDwtIGRmICU+JSAKICBmaWx0ZXIob250X2N0cnlfbmFtZSAlaW4lIGMoIlVTIiwgIkdoYW5hIiwgIkVjdWFkb3IiLCAiUGVydSIpKSAlPiUKICBzZWxlY3Qob250X2N0cnlfbmFtZSwgb250X3N1YmosCiAgICAgICAgIHNjaV9leHRfZ3JtLCBzcG5fZXh0X2RlbSwgb3JkX2V4dF9tdWcsIHNjaV9leHRfZnJjLCBmaWNfZXh0X3NtbiwKICAgICAgICAgc2NpX2V4dF9jbmMsIHNwbl9leHRfZ29kLCBvcmRfZXh0X3RibCwgc3BuX2V4dF9hYnMsIGZpY19leHRfa3drLAogICAgICAgICBzY2lfZXh0X2ZsdSwgc3BuX2V4dF93ZW4sIHNjaV9leHRfcGFyLCBmaWNfZXh0X3NwZCwgc3BuX2V4dF9va3csIGZpY19leHRfcmFtLCAKICAgICAgICAgc3BuX2V4dF95c2gsIGZpY19leHRfbmp0LCBzcG5fZXh0X2NoYSwgbmFzX2V4dF9yb24sIG9yZF9leHRfdGF6LCBzcG5fZXh0X29uaSwgbmFzX2V4dF9kbHAKICAgICAgICAgKSAlPiUKICBtdXRhdGUoYWNyb3NzKGMoLW9udF9jdHJ5X25hbWUsIC1vbnRfc3ViaiksIGFzLm51bWVyaWMpKSAlPiUKICBwaXZvdF9sb25nZXIoYygtb250X2N0cnlfbmFtZSwgLW9udF9zdWJqKSwgbmFtZXNfdG8gPSAicXVlc3Rpb24iLCB2YWx1ZXNfdG8gPSAicmVzcG9uc2UiKSAlPiUKICBtdXRhdGUoCiAgICByZXNwb25zZSA9IGlmZWxzZShyZXNwb25zZSA9PSA5OSwgMC41LCByZXNwb25zZSksCiAgICBxdWVzdGlvbl90eXBlID0gcmVjb2RlKHF1ZXN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lfZXh0X2dybSA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX2V4dF9mcmMgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9leHRfY25jID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lfZXh0X2ZsdSA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX2V4dF9wYXIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZF9leHRfbXVnID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkX2V4dF90YmwgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRfZXh0X3RheiA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9leHRfZ29kID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9leHRfZGVtID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9leHRfd2VuID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9leHRfb2t3ID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9leHRfYWJzID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9leHRfeXNoID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9leHRfY2hhID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hc19leHRfcm9uID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9leHRfb25pID0gIlN1cGVybmF0dXJhbCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICBuYXNfZXh0X2RscCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X2t3ayA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X3NtbiA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X3NwZCA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X3JhbSA9ICJGaWN0aW9uYWwiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX2V4dF9uanQgPSAiRmljdGlvbmFsIiksIAogICAgCiAgKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgJT4lIAogIGdyb3VwX2J5KG9udF9jdHJ5X25hbWUsIHF1ZXN0aW9uKSAlPiUKICBtdXRhdGUoY29uc2Vuc3VzX2V4Y2xfc2VsZiA9IChzdW0ocmVzcG9uc2UsIG5hLnJtID0gVFJVRSkgLSByZXNwb25zZSkvKG4oKS0xKSwKICAgICAgICAgY29uc2Vuc3VzID0gKHN1bShyZXNwb25zZSwgbmEucm0gPSBUUlVFKS9uKCkpKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBtdXRhdGUoaXRlbV9jb2RlID0gc3RyX2V4dHJhY3QocXVlc3Rpb24sICJbXl9dKyQiKSkgI2V4dHJhY3RpbmcgZmluYWwgMyBjaGFyYWN0ZXJzCgojIG1ha2luZyBsb25nIHVzZW5zIGRmIApkZl91c2Vuc19sb25nIDwtIGRmX3VzZW5zICU+JSAKICBzZWxlY3QoLW9udF92ZXJzaW9uKSAlPiUgCiAgcGl2b3RfbG9uZ2VyKGMoLW9udF9jdHJ5X25hbWUsIC1vbnRfc3ViaiksIG5hbWVzX3RvID0gInVzZW5zX3F1ZXN0aW9uIiwgdmFsdWVzX3RvID0gInVzZW5zX3Jlc3BvbnNlIikgJT4lCiAgZmlsdGVyKCFpcy5uYSh1c2Vuc19yZXNwb25zZSkpICU+JSAKICBtdXRhdGUoaXRlbV9jb2RlID0gc3RyX2V4dHJhY3QodXNlbnNfcXVlc3Rpb24sICJbXl9dKyQiKSkgI2V4dHJhY3RpbmcgZmluYWwgMyBjaGFyYWN0ZXJzCgojIG1ha2luZyBsb25nIGNvbmZpZGVuY2UgZGYKZGZfY29uZl9sb25nIDwtIGRmICU+JSAKICBmaWx0ZXIob250X2N0cnlfbmFtZSAlaW4lIGMoIlVTIiwgIkdoYW5hIiwgIkVjdWFkb3IiLCAiUGVydSIpKSAlPiUgIAogICAgc2VsZWN0KG9udF9jdHJ5X25hbWUsIG9udF9zdWJqLAogICAgICAgICAgIHNjaV9jb25mLmV4dF9ncm0sIHNwbl9jb25mLmV4dF9kZW0sIG9yZF9jb25mLmV4dF9tdWcsIHNjaV9jb25mLmV4dF9ndnQsIGZpY19jb25mLmV4dF9zbW4sCiAgICAgICAgICAgc2NpX2NvbmYuZXh0X2NuYywgc3BuX2NvbmYuZXh0X2dvZCwgb3JkX2NvbmYuZXh0X3RibCwgc3BuX2NvbmYuZXh0X2docywgZmljX2NvbmYuZXh0X2hhcCwgIAogICAgICAgICAgIHNjaV9jb25mLmV4dF9ncm0sIHNwbl9jb25mLmV4dF9kZW0sIG9yZF9jb25mLmV4dF9tdWcsIHNjaV9jb25mLmV4dF9mcmMsIGZpY19jb25mLmV4dF9zbW4sICAKICAgICAgICAgICBzY2lfY29uZi5leHRfY25jLCBzcG5fY29uZi5leHRfZ29kLCBvcmRfY29uZi5leHRfdGJsLCBzcG5fY29uZi5leHRfYWJzLCBmaWNfY29uZi5leHRfa3drLCAgCiAgICAgICAgICAgc2NpX2NvbmYuZXh0X2ZsdSwgc3BuX2NvbmYuZXh0X3dlbiwgb3JkX2NvbmYuZXh0X211Zywgc2NpX2NvbmYuZXh0X3BhciwgZmljX2NvbmYuZXh0X3NwZCwgIAogICAgICAgICAgIHNjaV9jb25mLmV4dF9jbmMsIHNwbl9jb25mLmV4dF9nb2QsIG9yZF9jb25mLmV4dF90YmwsIHNwbl9jb25mLmV4dF9va3csIGZpY19jb25mLmV4dF9yYW0sICAKICAgICAgICAgICBzcG5fY29uZi5leHRfeXNoLCBzY2lfY29uZi5leHRfcGFyLCBzcG5fY29uZi5leHRfZ29kLCBvcmRfY29uZi5leHRfdGJsLCAgCiAgICAgICAgICAgZmljX2NvbmYuZXh0X25qdCwgc3BuX2NvbmYuZXh0X2NoYSwgc2NpX2NvbmYuZXh0X2NuYywgIAogICAgICAgICAgIHNjaV9jb25mLmV4dF9ncm0sIG5hc19jb25mLmV4dF9yb24sIG9yZF9jb25mLmV4dF90YXosIHNwbl9jb25mLmV4dF9vbmksICAKICAgICAgICAgICBmaWNfY29uZi5leHRfc21uLCBuYXNfY29uZi5leHRfZGxwKSAlPiUgIAogICAgbXV0YXRlKGFjcm9zcygtb250X2N0cnlfbmFtZSwgYXMubnVtZXJpYykpICU+JQogICAgcGl2b3RfbG9uZ2VyKGMoLW9udF9jdHJ5X25hbWUsIC1vbnRfc3ViaiksIG5hbWVzX3RvID0gImNvbmZfcXVlc3Rpb24iLCB2YWx1ZXNfdG8gPSAiY29uZl9yZXNwb25zZSIpICU+JSAgCiAgICBmaWx0ZXIoIWlzLm5hKGNvbmZfcmVzcG9uc2UpKSAlPiUgIAogICAgbXV0YXRlKGNhdGVnb3J5ID0gcmVjb2RlKGNvbmZfcXVlc3Rpb24sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9jb25mLmV4dF9ncm0gPSAiU2NpZW50aWZpYyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9jb25mLmV4dF9mcmMgPSAiU2NpZW50aWZpYyIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lfY29uZi5leHRfY25jID0gIlNjaWVudGlmaWMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX2NvbmYuZXh0X2ZsdSA9ICJTY2llbnRpZmljIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9jb25mLmV4dF9wYXIgPSAiU2NpZW50aWZpYyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9jb25mLmV4dF9ndnQgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkX2NvbmYuZXh0X211ZyA9ICJPcmRpbmFyeSIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRfY29uZi5leHRfdGJsID0gIk9yZGluYXJ5IiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZF9jb25mLmV4dF90YXogPSAiT3JkaW5hcnkiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BuX2NvbmYuZXh0X2dvZCA9ICJTdXBlcm5hdHVyYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BuX2NvbmYuZXh0X2RlbSA9ICJTdXBlcm5hdHVyYWwiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fY29uZi5leHRfd2VuID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fY29uZi5leHRfb2t3ID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fY29uZi5leHRfYWJzID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fY29uZi5leHRfeXNoID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fY29uZi5leHRfY2hhID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXNfY29uZi5leHRfcm9uID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fY29uZi5leHRfb25pID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXNfY29uZi5leHRfZGxwID0gIlN1cGVybmF0dXJhbCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9jb25mLmV4dF9naHMgPSAiU3VwZXJuYXR1cmFsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX2NvbmYuZXh0X2t3ayA9ICJGaWN0aW9uYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX2NvbmYuZXh0X3NtbiA9ICJGaWN0aW9uYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX2NvbmYuZXh0X3NwZCA9ICJGaWN0aW9uYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX2NvbmYuZXh0X3JhbSA9ICJGaWN0aW9uYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX2NvbmYuZXh0X25qdCA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpY19jb25mLmV4dF9oYXAgPSAiRmljdGlvbmFsIiksCiAgICAgICAgICAgb250X2N0cnlfbmFtZSA9IGZhY3RvcihvbnRfY3RyeV9uYW1lLCBsZXZlbHMgPSBsZXZlbHNfY291bnRyeSksCiAgICAgICAgICAgcmVzcG9uc2VfdHh0ID0gcmVjb2RlKGNvbmZfcmVzcG9uc2UsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYDBgID0gIk5vdCBzdXJlIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgMWAgPSAiU29tZXdoYXQgc3VyZSIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYDJgID0gIlByZXR0eSBzdXJlIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgM2AgPSAiVmVyeSBzdXJlIikpICU+JSAKICBtdXRhdGUoaXRlbV9jb2RlID0gc3RyX2V4dHJhY3QoY29uZl9xdWVzdGlvbiwgIlteX10rJCIpKSAjZXh0cmFjdGluZyBmaW5hbCAzIGNoYXJhY3RlcnMKYGBgCgpgYGB7cn0KIyBqb2luaW5nIGludG8gb25lIGRhdGFmcmFtZQpkZl9leHRfdXNlbnNfY29uZiA8LSBsZWZ0X2pvaW4oCiAgZGZfZXh0X2xvbmcsIGRmX3VzZW5zX2xvbmcsIGJ5ID0gYygib250X2N0cnlfbmFtZSIsICJvbnRfc3ViaiIsICJpdGVtX2NvZGUiKQopICU+JSAKICBsZWZ0X2pvaW4oZGZfY29uZl9sb25nLCBieSA9IGMoIm9udF9jdHJ5X25hbWUiLCAib250X3N1YmoiLCAiaXRlbV9jb2RlIikpICU+JQogIG11dGF0ZShpdGVtX2NvZGUgPSBhcy5mYWN0b3IoaXRlbV9jb2RlKSwgCiAgICAgICAgIHF1ZXN0aW9uX3R5cGUgPSBmYWN0b3IocXVlc3Rpb25fdHlwZSwgbGV2ZWxzID0gbGV2ZWxzX3R5cGUpLCAKICAgICAgICAgb250X2N0cnlfbmFtZSA9IGZhY3RvcihvbnRfY3RyeV9uYW1lLCBsZXZlbHMgPSBsZXZlbHNfY291bnRyeSkpICNtYWtpbmcgdGhpcyBhIGZhY3RvciBzbyB3ZSBjYW4gZG8gb3JkaW5hbCByZWdyZXNzaW9uCmBgYAoKIyBQYXJ0aWNpcGFudCBEZW1vZ3JhcGhpY3MgCgpgYGB7cn0KIyBIb3cgbWFueSBwYXJ0aWNpcGFudHMgcGVyIGNvdW50cnk/IAp4dGFicyh+IG9udF9jdHJ5X25hbWUsIGRhdGEgPSBkZikKCiMgVmVyc2lvbiBvZiBxdWVzdGlvbnMgKHZlcnNpb24gMSBvciB2ZXJzaW9uIDIpIGJ5IGNvdW50cnkgCnh0YWJzKH4gb250X2N0cnlfbmFtZSArIG9udF92ZXJzaW9uLCBkYXRhID0gZGYpCmBgYAoKYGBge3J9CiNhZ2UKZGYgJT4lIAogIG11dGF0ZShvbnRfYWdlID0gYXMubnVtZXJpYyhvbnRfYWdlKSkgJT4lCiAgZ3JvdXBfYnkob250X2N0cnlfbmFtZSkgJT4lIAogIHN1bW1hcml6ZShuID0gbigpLAogICAgICAgICAgICBtZWFuX2FnZSA9IG1lYW4ob250X2FnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgbWVkX2FnZSA9IG1lZGlhbihvbnRfYWdlLCBuYS5ybSA9IFQpLCAKICAgICAgICAgICAgc2RfYWdlID0gc2Qob250X2FnZSwgbmEucm0gPSBUKSwgCiAgICAgICAgICAgIHJhbmdlX2FnZSA9IHBhc3RlMChtaW4ob250X2FnZSwgbmEucm0gPSBUKSwgIiAtICIsIG1heChvbnRfYWdlLCBuYS5ybSA9IFQpKSkgCgojc2V4IG1hbGUgPSAxCnh0YWJzKH4gb250X2N0cnlfbmFtZSArIG9udF9zZXgsIGRhdGEgPSBkZikKCiNldGhuaWNpdHkgCnh0YWJzKH4gdG9sb3dlcihvbnRfZXRobikgKyBvbnRfY3RyeV9uYW1lLCBkYXRhID0gZGYpCgojZWR1Y2F0aW9uIAp4dGFicyh+IHRvbG93ZXIob250X2hpZWQpICsgb250X2N0cnlfbmFtZSwgZGF0YSA9IGRmKQoKIyJpbXBvcnRhbmNlIG9mIGdvZCAiR29kIHBsYXlzIGEgdmVyeSBpbXBvcnRhbnQgcm9sZSBpbiBteSBsaWZlIChzdHJvbmdseSBkaXNhZ3JlZSB0byBzdHJvbmdseSBhZ3JlZSkKeHRhYnMofiBvbnRfY3RyeV9uYW1lICsgYXMubnVtZXJpYyhvbnRfaW1nZCksIGRhdGEgPSBkZikKCiNjaHVyY2ggYXR0ZW5kYW5jZQp4dGFicyh+IHRvbG93ZXIob250X2NoZnEpICsgb250X2N0cnlfbmFtZSwgZGF0YSA9IGRmKQoKIyBEbyB5b3UgdGhpbmsgeW91IGFyZSByaWNoZXIgb3IgcG9vcmVyIHRoYW4gbW9zdCBvZiB0aGUgcGVvcGxlIGluIHlvdXIgY29tbXVuaXR5PyAobXVjaCBwb29yZXIgLSBtdWNoIHJpY2hlcikKeHRhYnMofiBvbnRfY3RyeV9uYW1lICsgYXMubnVtZXJpYyhvbnRfc2VzKSwgZGF0YSA9IGRmKQoKIyBEbyB5b3UgZmVlbCB5b3UgY2FuIGFmZm9yZCB0byBidXkgdGhpbmdzIHlvdSBuZWVkLCBsaWtlIGNsb3RoaW5nIGFuZCBzaG9lcz8gKG5vL3llcykKeHRhYnMofiBvbnRfY3RyeV9uYW1lICsgYXMubnVtZXJpYyhvbnRfYWZmciksIGRhdGEgPSBkZikKYGBgCgojIEZpZ3VyZSAxLCBBY2NvbXBhbnlpbmcgQW5hbHlzZXMgJiBBcHBlbmRpeCBDIHJlZ3Jlc3Npb24gcmVzdWx0cwoKVGhlIGdvYWwgaGVyZSBpcyB0byBjb21iaW5lIGNvbmZpZGVuY2UgYW5kIGV4aXN0ZW5jZSBzY29yZXMuIFRoZSBjb25maWRlbmNlIGdyYXBoIGFib3ZlIHNob3dzIHBlb3BsZSdzIGNvbmZpZGVuY2UgcmF0aW5ncyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhleSBzYWlkIHRoZSBvYmplY3QgZXhpc3RlZCBvciBub3QuIFNvLCBJIHdpbGwgY29tYmluZSB0aGVtIHRoaXMgd2F5OgotIGlmIHRoZXkgc2FpZCBpdCBkb2Vzbid0IGV4aXN0ICotMQotIGlmIHRoZXkgc2FpZCBpdCBkb2VzIGV4aXN0ICoxCi0gaWYgdGhleSBzYWlkIHRoZXkgZG9uJ3Qga25vdyAqMCAKClRoaXMgd2F5LCBhIHBlcnNvbiB3aG8gc2FpZCB0aGV5IGRvbid0IGtub3cgaWYgaXQgZXhpc3RzIGFuZCBhIHBlcnNvbiB3aG8gc2FpZCBpdCBkaWQgb3IgZGlkbid0IGJ1dCBzYWlkIHRoZXkgd2VyZSAibm90IHN1cmUiIHdpbGwgYm90aCBnZXQgYSBzY29yZSBvZiAwLiBBIHBlcnNvbiB3aG8gaXMgInZlcnkgc3VyZSIgaXQgZG9lc24ndCBleGlzdCB3aWxsIGdldCBhIHNjb3JlIG9mIC0zIGFuZCBhIHBlcnNvbiB3aG8gaXMgInZlcnkgc3VyZSIgaXQgZG9lcyBleGlzdCB3aWxsIGdldCBhIHNjb3JlIG9mIDMuIAoKYGBge3J9CiMgbWFraW5nIG5ldyBjb2x1bW4gb2YgZXhpc3RlbmNlIHJlc3BvbnNlIGRpcmVjdGlvbnMKZGZfZXh0X3VzZW5zX2NvbmYgPC0gZGZfZXh0X3VzZW5zX2NvbmYgJT4lIAogIG11dGF0ZShleHRfZGlyID0gY2FzZV93aGVuKAogICAgcmVzcG9uc2UgPT0gMSB+IDEsCiAgICByZXNwb25zZSA9PSAwIH4gLTEsCiAgICByZXNwb25zZSA9PSAwLjUgfiAwLAogICAgVFJVRSB+IHJlc3BvbnNlKSwgCiAgICBjb25mX2RpciA9IGNvbmZfcmVzcG9uc2UqZXh0X2RpciwgCiAgICBjb25mX2Rpcl90ZXh0ID0gY2FzZV93aGVuKAogICAgICBjb25mX2RpciA9PSAtMyB+ICJWZXJ5IHN1cmUgZG9lc24ndCBleGlzdCIsCiAgICAgIGNvbmZfZGlyID09IC0yIH4gIlByZXR0eSBzdXJlIGRvZXNuJ3QgZXhpc3QiLAogICAgICBjb25mX2RpciA9PSAtMSB+ICJTb21ld2hhdCBzdXJlIGRvZXNuJ3QgZXhpc3QiLAogICAgICBjb25mX2RpciA9PSAwIH4gIk5vdCBzdXJlIiwKICAgICAgY29uZl9kaXIgPT0gMSB+ICJTb21ld2hhdCBzdXJlIGV4aXN0cyIsCiAgICAgIGNvbmZfZGlyID09IDIgfiAiUHJldHR5IHN1cmUgZXhpc3RzIiwKICAgICAgY29uZl9kaXIgPT0gMyB+ICJWZXJ5IHN1cmUgZXhpc3RzIiksIAogICAgY29uZl9kaXJfdGV4dCA9IGZhY3Rvcihjb25mX2Rpcl90ZXh0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiVmVyeSBzdXJlIGRvZXNuJ3QgZXhpc3QiLCAiUHJldHR5IHN1cmUgZG9lc24ndCBleGlzdCIsICJTb21ld2hhdCBzdXJlIGRvZXNuJ3QgZXhpc3QiLCAiTm90IHN1cmUiLCAiU29tZXdoYXQgc3VyZSBleGlzdHMiLCAiUHJldHR5IHN1cmUgZXhpc3RzIiwgIlZlcnkgc3VyZSBleGlzdHMiKSkKICAgICkKYGBgCgpHcmFwaGluZyBGaWd1cmUgMQoKYGBge3IsIGZpZy53aWR0aD0xNX0KY29uZl9jb2xvcnMgPC0gKFJDb2xvckJyZXdlcjo6YnJld2VyLnBhbCg3LCAiUmRZbEJ1IikpCgojIENyZWF0ZSBzdGFja2VkIGJhciBwbG90ICAKZGZfZXh0X3VzZW5zX2NvbmYgJT4lIAogIGZpbHRlcighaXMubmEoY29uZl9kaXJfdGV4dCkpICU+JSAKICBtdXRhdGUoY2F0ZWdvcnkgPSBmYWN0b3IoY2F0ZWdvcnksIGxldmVscyA9IGMoIk9yZGluYXJ5IiwgIlNjaWVudGlmaWMiLCAiU3VwZXJuYXR1cmFsIiwgIkZpY3Rpb25hbCIpKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gY2F0ZWdvcnksIGZpbGwgPSBjb25mX2Rpcl90ZXh0KSkgKyAgCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgICMgU3RhY2tlZCBwcm9wb3J0aW9ucwogICMgZ2VvbV90ZXh0KHN0YXQgPSAiY291bnQiLCBhZXMobGFiZWwgPSBhZnRlcl9zdGF0KGNvdW50KSksCiAgIyAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9maWxsKHZqdXN0ID0gMC41KSwKICAjICAgICAgICAgICBzaXplID0gNiwgY29sb3IgPSAid2hpdGUiKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IHNjYWxlczo6cGVyY2VudF9mb3JtYXQoYWNjdXJhY3kgPSAxKSkgKyAKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjb25mX2NvbG9ycywgZHJvcCA9IEZBTFNFKSArIAogIHRoZW1lX2J3KCkgKyAgCiAgbGFicygKICAgIHggPSAiQ2F0ZWdvcnkgb2YgT2JqZWN0cyIsICAKICAgIHkgPSAiUHJvcG9ydGlvbiBvZiBSZXNwb25zZXMiLCAgCiAgICBmaWxsID0gIkNvbmZpZGVuY2UgeCBFeGlzdGVuY2UiLCAgCiAgICB0aXRsZSA9ICJDb25maWRlbmNlIHggRXhpc3RlbmNlIGJ5IENhdGVnb3J5IGFuZCBGaWVsZCBTaXRlIgogICkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSwgYW5nbGUgPSAtMzUsIHZqdXN0ID0gMSwgaGp1c3QgPSAwKSwKICAgICAgICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4KSwKICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4KSwKICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYpLAogICAgICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI1KSwgCiAgICAgICAgc3RyaXAudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCksIAogICAgICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksIAogICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0xOCkpICsKICBmYWNldF93cmFwKH4gb250X2N0cnlfbmFtZSwgbmNvbCA9IDQpICAgIyBTZXBhcmF0ZSBwbG90cyBmb3IgZWFjaCBjb3VudHJ5CmBgYAoKCk1vZGVscyBwcmVkaWN0aW5nIGNvbmZpZGVuY2UgeCBleGlzdGVuY2Ugc2NvcmVzIGJ5IGNhdGVnb3J5IHdpdGggc2VwYXJhdGUgcmVncmVzc2lvbnMgZm9yIGVhY2ggY291bnRyeS4gVGhlIHBhaXJ3aXNlIGNvbnRyYXN0cyBoZXJlIHNob3dpbmcgb3JkaW5hcnkgdnMuIHN1cGVybmF0dXJhbCBhbmQgc2NpZW50aWZpYyB2cy4gc3VwZXJuYXR1cmFsIGFyZSB3aGF0IG1ha2UgdXAgVGFibGUgMi4gRnVsbCByZXN1bHRzIGFyZSByZXBvcnRlZCBpbiBBcHBlbmRpeCBDLiAKCmBgYHtyfQojIDEgcmVncmVzc2lvbiBwZXIgY291bnRyeSAoNCB0b3RhbCkgd2hlcmUgcmVzcG9uc2UgaXMgcHJlZGljdGVkIGJ5IGNhdGVnb3J5CgojIFVTCm0udXMgPC0gbG1lcihjb25mX2RpciB+IHF1ZXN0aW9uX3R5cGUgKyAoMXxvbnRfc3ViaiksIGRhdGEgPSBmaWx0ZXIoZGZfZXh0X3VzZW5zX2NvbmYsIG9udF9jdHJ5X25hbWUgPT0gIlVTIikpCnN1bW1hcnkobS51cykKCiMjcGFpcndpc2UgY29udHJhc3RzCmVtbS51cyA8LSBlbW1lYW5zKG0udXMsIH4gcXVlc3Rpb25fdHlwZSkKY29udHJhc3QoZW1tLnVzLCBtZXRob2QgPSAicGFpcndpc2UiLCBhZGp1c3QgPSAibm9uZSIpCgojIEdoYW5hCm0uZ2hhbmEgPC0gbG1lcihjb25mX2RpciB+IHF1ZXN0aW9uX3R5cGUgKyAoMXxvbnRfc3ViaiksIGRhdGEgPSBmaWx0ZXIoZGZfZXh0X3VzZW5zX2NvbmYsIG9udF9jdHJ5X25hbWUgPT0gIkdoYW5hIikpCnN1bW1hcnkobS5naGFuYSkKCiMjcGFpcndpc2UgY29udHJhc3RzCmVtbS5naGFuYSA8LSBlbW1lYW5zKG0uZ2hhbmEsIH4gcXVlc3Rpb25fdHlwZSkKY29udHJhc3QoZW1tLmdoYW5hLCBtZXRob2QgPSAicGFpcndpc2UiLCBhZGp1c3QgPSAibm9uZSIpCgojIEVjdWFkb3IKbS5lY3VhZG9yIDwtIGxtZXIoY29uZl9kaXIgfiBxdWVzdGlvbl90eXBlICsgKDF8b250X3N1YmopLCBkYXRhID0gZmlsdGVyKGRmX2V4dF91c2Vuc19jb25mLCBvbnRfY3RyeV9uYW1lID09ICJFY3VhZG9yIikpCnN1bW1hcnkobS5lY3VhZG9yKQoKIyNwYWlyd2lzZSBjb250cmFzdHMKZW1tLmVjdWFkb3IgPC0gZW1tZWFucyhtLmVjdWFkb3IsIH4gcXVlc3Rpb25fdHlwZSkKY29udHJhc3QoZW1tLmVjdWFkb3IsIG1ldGhvZCA9ICJwYWlyd2lzZSIsIGFkanVzdCA9ICJub25lIikKCiMgUGVydQptLnBlcnUgPC0gbG1lcihjb25mX2RpciB+IHF1ZXN0aW9uX3R5cGUgKyAoMXxvbnRfc3ViaiksIGRhdGEgPSBmaWx0ZXIoZGZfZXh0X3VzZW5zX2NvbmYsIG9udF9jdHJ5X25hbWUgPT0gIlBlcnUiKSkKc3VtbWFyeShtLnBlcnUpCgojI3BhaXJ3aXNlIGNvbnRyYXN0cwplbW0ucGVydSA8LSBlbW1lYW5zKG0ucGVydSwgfiBxdWVzdGlvbl90eXBlKQpjb250cmFzdChlbW0ucGVydSwgbWV0aG9kID0gInBhaXJ3aXNlIiwgYWRqdXN0ID0gIm5vbmUiKQoKYGBgCgpNb2RlbCBwcmVkaWN0aW5nIGNvbmZpZGVuY2UgeCBleGlzdGVuY2Ugc2NvcmVzIGJ5IGNhdGVnb3J5IHBvb2xpbmcgYWNyb3NzIG5vbi1VUyBjb3VudHJpZXMuIFRoZXNlIHJlc3VsdHMgc2hvdyB0aGF0IHdoZW4geW91IGNvbWJpbmUgYWxsIG5vbi1VUyBjb3VudHJ5IHJlc3BvbnNlcyB0b2dldGhlciwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBvcmRpbmFyeSBhbmQgc3VwZXJuYXR1cmFsIGNvbmZpZGVuY2UgcmF0aW5ncyBhcmUgc2lnbmlmaWNhbnQuIAoKYGBge3J9CiNjb21iaW5naW5nIG5vbiB1cyBjb3VudHJpZXMKbS5ub24udXMgPC0gbG1lcihjb25mX2RpciB+IHF1ZXN0aW9uX3R5cGUgKyAoMXxvbnRfY3RyeV9uYW1lL29udF9zdWJqKSwgZGF0YSA9IGZpbHRlcihkZl9leHRfdXNlbnNfY29uZiwgb250X2N0cnlfbmFtZSAhPSAiVVMiKSkKc3VtbWFyeShtLm5vbi51cykKCiMjcGFpcndpc2UgY29udHJhc3RzCmVtbS5ub24udXMgPC0gZW1tZWFucyhtLm5vbi51cywgfiBxdWVzdGlvbl90eXBlKQpjb250cmFzdChlbW0ubm9uLnVzLCBtZXRob2QgPSAicGFpcndpc2UiLCBhZGp1c3QgPSAibm9uZSIpCmBgYAoKTW9kZWwgcHJlZGljdGluZyBjb25maWRlbmNlIHggZXhpc3RlbmNlIHNjb3JlcyBieSBjYXRlZ29yeSwgYnV0IG9ubHkgZm9yIGhpZ2hlc3QgY29udHJhc3Qgb3JkaW5hcnkgdnMuIHN1cGVybmF0dXJhbCBpdGVtcyAoY29mZmVlIGN1cHMgJiB0YWJsZXMgdnMuIEdvZCAmIGRlbW9ucykuIFRoZXNlIHJlc3VsdHMgc2hvdyB0aGF0IHRoZXNlIGhpZ2hlc3QgY29udHJhc3RzIGFyZSBzaWduaWZpY2FudGx5IGRpZmZlcmVudCBpbiB0aGUgVVMgYW5kIEdoYW5hLCBidXQgbm90IGluIEVjdWFkb3IgYW5kIFBlcnUgKGluIEVjdWFkb3IsIG91ciBzbWFsbGVzdCBzYW1wbGUgc2l6ZSwgdGhlcmUgYXJlIGhpbnRzIHRoYXQgdGhpcyBlZmZlY3QgbWlnaHQgYmUgZm91bmQgaW4gZnV0dXJlIHNpbWlsYXIgc3R1ZGllcykuIFNlZSBBcHBlbmRpeCBBIGZvciBmdWxsIGNvbmZpZGVuY2UgYW5kIGV4aXN0ZW5jZSByYXRpbmdzIGJyb2tlbiBkb3duIGJ5IGl0ZW0sIHZlcnNpb24sIGFuZCBjb3VudHJ5LiAKCmBgYHtyfQojIFVTIC0tbXVncywgdGFibGVzLCBnb2QsIGRlbW9ucwptLm11Zy51cyA8LSBsbWVyKGNvbmZfZGlyIH4gcXVlc3Rpb25fdHlwZSArICgxfG9udF9zdWJqKSwgZGF0YSA9IGRmX2V4dF91c2Vuc19jb25mICU+JSAKICAgICAgICAgICAgICAgZmlsdGVyKG9udF9jdHJ5X25hbWUgPT0gIlVTIiwKICAgICAgICAgICAgICAgICAgICAgIGl0ZW1fY29kZSAlaW4lIGMoIm11ZyIsICJ0YmwiLCAiZGVtIiwgImdvZCIpKSkKc3VtbWFyeShtLm11Zy51cykKCiMgR2hhbmEgLS1tdWdzLCB0YWJsZXMsIGdvZCwgZGVtb25zCm0ubXVnLmdoYW5hIDwtIGxtZXIoY29uZl9kaXIgfiBxdWVzdGlvbl90eXBlICsgKDF8b250X3N1YmopLCBkYXRhID0gZGZfZXh0X3VzZW5zX2NvbmYgJT4lIAogICAgICAgICAgICAgICBmaWx0ZXIob250X2N0cnlfbmFtZSA9PSAiR2hhbmEiLAogICAgICAgICAgICAgICAgICAgICAgaXRlbV9jb2RlICVpbiUgYygibXVnIiwgInRibCIsICJkZW0iLCAiZ29kIikpKQpzdW1tYXJ5KG0ubXVnLmdoYW5hKQoKIyBFY3VhZG9yIC0tbXVncywgdGFibGVzLCBnb2QsIFdlbmUKbS5tdWcuZWN1YWRvciA8LSBsbWVyKGNvbmZfZGlyIH4gcXVlc3Rpb25fdHlwZSArICgxfG9udF9zdWJqKSwgZGF0YSA9IGRmX2V4dF91c2Vuc19jb25mICU+JSAKICAgICAgICAgICAgICAgZmlsdGVyKG9udF9jdHJ5X25hbWUgPT0gIkVjdWFkb3IiLAogICAgICAgICAgICAgICAgICAgICAgaXRlbV9jb2RlICVpbiUgYygibXVnIiwgInRibCIsICJ3ZW4iLCAiZ29kIikpKSAjV2VuZSBpbnN0ZWFkIG9mIGRlbW9uCnN1bW1hcnkobS5tdWcuZWN1YWRvcikKCiMgUGVydSAtLW11Z3MsIHRhYmxlcywgZ29kLCBPbmkgSWJvIAptLm11Zy5wZXJ1IDwtIGxtZXIoY29uZl9kaXIgfiBxdWVzdGlvbl90eXBlICsgKDF8b250X3N1YmopLCBkYXRhID0gZGZfZXh0X3VzZW5zX2NvbmYgJT4lIAogICAgICAgICAgICAgICBmaWx0ZXIob250X2N0cnlfbmFtZSA9PSAiUGVydSIsCiAgICAgICAgICAgICAgICAgICAgICBpdGVtX2NvZGUgJWluJSBjKCJ0YXoiLCAidGJsIiwgIm9uaSIsICJnb2QiKSkpCnN1bW1hcnkobS5tdWcucGVydSkKYGBgCgojIEZpZ3VyZSAyICYgQWNjb21wYW55aW5nIEFuYWx5c2VzCgpgYGB7ciwgZmlnLndpZHRoPTE1fQpkYXRhX2xvbmdfY29tbSA8LSBkZiAlPiUKICBmaWx0ZXIob250X2N0cnlfbmFtZSAlaW4lIGMoIlVTIiwgIkdoYW5hIiwgIkVjdWFkb3IiLCAiUGVydSIpKSAlPiUgIAogICAgc2VsZWN0KG9udF9jdHJ5X25hbWUsIG9udF9zdWJqLAogICAgICAgICAgIHNjaV9jb211X2dybSwgc3BuX2NvbXVfZGVtLCBvcmRfY29tdV9tdWcsIHNjaV9jb211X2d2dCwgZmljX2NvbXVfc21uLAogICAgICAgICAgIHNjaV9jb211X2NuYywgc3BuX2NvbXVfZ29kLCBvcmRfY29tdV90YmwsIHNwbl9jb211X2docywgZmljX2NvbXVfaGFwLCAgCiAgICAgICAgICAgc2NpX2NvbXVfZ3JtLCBzcG5fY29tdV9kZW0sIG9yZF9jb211X211Zywgc2NpX2NvbXVfZnJjLCBmaWNfY29tdV9zbW4sICAKICAgICAgICAgICBzY2lfY29tdV9jbmMsIHNwbl9jb211X2dvZCwgb3JkX2NvbXVfdGJsLCBzcG5fY29tdV9hYnMsIGZpY19jb211X2t3aywgIAogICAgICAgICAgIHNjaV9jb211X2ZsdSwgc3BuX2NvbXVfd2VuLCBvcmRfY29tdV9tdWcsIHNjaV9jb211X3BhciwgZmljX2NvbXVfc3BkLCAgCiAgICAgICAgICAgc2NpX2NvbXVfY25jLCBzcG5fY29tdV9nb2QsIG9yZF9jb211X3RibCwgc3BuX2NvbXVfb2t3LCBmaWNfY29tdV9yYW0sICAKICAgICAgICAgICBzcG5fY29tdV95c2gsIHNjaV9jb211X3Bhciwgc3BuX2NvbXVfZ29kLCBvcmRfY29tdV90YmwsICAKICAgICAgICAgICBmaWNfY29tdV9uanQsIHNwbl9jb211X2NoYSwgc2NpX2NvbXVfY25jLCAgCiAgICAgICAgICAgc2NpX2NvbXVfZ3JtLCBuYXNfY29tdV9yb24sIG9yZF9jb211X3Rheiwgc3BuX2NvbXVfb25pLCAgCiAgICAgICAgICAgZmljX2NvbXVfc21uLCBuYXNfY29tdV9kbHApICU+JSAgCiAgICBtdXRhdGUoYWNyb3NzKGMoLW9udF9jdHJ5X25hbWUsIC1vbnRfc3ViaiksIGFzLm51bWVyaWMpKSAlPiUKICAgIHBpdm90X2xvbmdlcihjKC1vbnRfY3RyeV9uYW1lLCAtb250X3N1YmopLCBuYW1lc190byA9ICJxdWVzdGlvbiIsIHZhbHVlc190byA9ICJyZXNwb25zZSIpICU+JSAgCiAgICBtdXRhdGUocmVzcG9uc2UgPSBpZmVsc2UocmVzcG9uc2UgPT0gOTksIDAuNSwgcmVzcG9uc2UpKSAlPiUKICAgIGZpbHRlcighaXMubmEocmVzcG9uc2UpKSAlPiUgIAogICAgbXV0YXRlKGNhdGVnb3J5ID0gcmVjb2RlKHF1ZXN0aW9uLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lfY29tdV9ncm0gPSAiU2NpZW50aWZpYyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9jb211X2ZyYyA9ICJTY2llbnRpZmljIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9jb211X2NuYyA9ICJTY2llbnRpZmljIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9jb211X2ZsdSA9ICJTY2llbnRpZmljIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9jb211X3BhciA9ICJTY2llbnRpZmljIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX2NvbXVfZ3Z0ID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZF9jb211X211ZyA9ICJPcmRpbmFyeSIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRfY29tdV90YmwgPSAiT3JkaW5hcnkiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkX2NvbXVfdGF6ID0gIk9yZGluYXJ5IiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9jb211X2dvZCA9ICJTdXBlcm5hdHVyYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BuX2NvbXVfZGVtID0gIlN1cGVybmF0dXJhbCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9jb211X3dlbiA9ICJTdXBlcm5hdHVyYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BuX2NvbXVfb2t3ID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fY29tdV9hYnMgPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9jb211X3lzaCA9ICJTdXBlcm5hdHVyYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BuX2NvbXVfY2hhID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXNfY29tdV9yb24gPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9jb211X29uaSA9ICJTdXBlcm5hdHVyYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFzX2NvbXVfZGxwID0gIlN1cGVybmF0dXJhbCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9jb211X2docyA9ICJTdXBlcm5hdHVyYWwiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfY29tdV9rd2sgPSAiRmljdGlvbmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpY19jb211X3NtbiA9ICJGaWN0aW9uYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX2NvbXVfc3BkID0gIkZpY3Rpb25hbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfY29tdV9yYW0gPSAiRmljdGlvbmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpY19jb211X25qdCA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpY19jb211X2hhcCA9ICJGaWN0aW9uYWwiKSwgIAogICAgICAgICAgIHJlc3BvbnNlX3R4dCA9IHJlY29kZShyZXNwb25zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYDBgID0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYDFgID0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAwLjVgID0gIklESyIpLAogICAgICAgICAgIHJlc3BvbnNlX3R4dCA9IGZhY3RvcihyZXNwb25zZV90eHQsIGxldmVscyA9IGMoIk5vIiwgIklESyIsICJZZXMiKSkpICU+JSAgCiAgICBmaWx0ZXIoIWlzLm5hKGNhdGVnb3J5KSkgIAoKICAjIENvbXB1dGUgYXZnIHBlciBjYXRlZ29yeSAgCiAgY2F0X29yZGVyIDwtIGRhdGFfbG9uZ19jb21tICU+JQogICAgZ3JvdXBfYnkoY2F0ZWdvcnkpICU+JQogICAgc3VtbWFyaXNlKG0gPSBtZWFuKHJlc3BvbnNlKSkKICAgICAKCiAgIyBNZXJnZSBhdmcgYW5kIHJlb3JkZXIgY2F0ZWdvcnkgIAogIGRhdGFfbG9uZ19jb21tIDwtIGRhdGFfbG9uZ19jb21tICU+JSAgCiAgICBsZWZ0X2pvaW4oY2F0X29yZGVyLCBieSA9ICJjYXRlZ29yeSIpICU+JSAgCiAgICBtdXRhdGUoY2F0ZWdvcnkgPSBmY3RfcmVvcmRlcihjYXRlZ29yeSwgbSkpCiAgCiAgIGNvbmZfY29sb3JzIDwtIHNldE5hbWVzKGJyZXdlci5wYWwoMywgIlJkWWxCdSIpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgYygiTm8iLCAiSURLIiwgIlllcyIpKQogIAogICMgY29uZl9jb2xvcnMgPC0gc2V0TmFtZXMoYygiIzAxNjY1ZSIsIiM1YWI0YWMiLCIjOGM1MTBhIiksIAogICMgICAgICAgICAgICAgICAgICAgICAgICAgYygiWWVzIiwgIklESyIsICJObyIpKQoKICAjIENyZWF0ZSBzdGFja2VkIGJhciBwbG90ICAKZGF0YV9sb25nX2NvbW0gJT4lCiAgbXV0YXRlKGNhdGVnb3J5ID0gZmFjdG9yKGNhdGVnb3J5LCBsZXZlbHMgPSBjKCJPcmRpbmFyeSIsICJTY2llbnRpZmljIiwgIlN1cGVybmF0dXJhbCIsICJGaWN0aW9uYWwiKSksIAogICAgICAgICBvbnRfY3RyeV9uYW1lID0gZmFjdG9yKG9udF9jdHJ5X25hbWUsIGxldmVscyA9IGxldmVsc19jb3VudHJ5KSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gY2F0ZWdvcnksIGZpbGwgPSByZXNwb25zZV90eHQpKSArICAKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyAgIyBTdGFja2VkIHByb3BvcnRpb25zCiAgIyBnZW9tX3RleHQoc3RhdCA9ICJjb3VudCIsIGFlcyhsYWJlbCA9IGFmdGVyX3N0YXQoY291bnQpKSwgICAKICAjICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2ZpbGwodmp1c3QgPSAwLjUpLCAgIAogICMgICAgICAgICAgIHNpemUgPSA2LCBjb2xvciA9ICJ3aGl0ZSIpICsgIAogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsgCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY29uZl9jb2xvcnMsIGRyb3AgPSBGQUxTRSkgKyAKICB0aGVtZV9idygpICsgIAogIGxhYnMoCiAgICB4ID0gIkNhdGVnb3J5IG9mIE9iamVjdHMiLCAgCiAgICB5ID0gIlByb3BvcnRpb24gb2YgUmVzcG9uc2VzIiwgIAogICAgZmlsbCA9ICJSZXNwb25zZXMiLCAgCiAgICB0aXRsZSA9ICJDYW4gcGVvcGxlIGNvbW11bmljYXRlIHdpdGggX18/IGJ5IENhdGVnb3J5IGFuZCBGaWVsZCBTaXRlIgogICkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSwgYW5nbGUgPSAtMzUsIHZqdXN0ID0gMSwgaGp1c3QgPSAwKSwKICAgICAgICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4KSwKICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4KSwKICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYpLAogICAgICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI1KSwgCiAgICAgICAgc3RyaXAudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCksIAogICAgICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksIAogICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0xOCkpICsKICBmYWNldF93cmFwKH4gb250X2N0cnlfbmFtZSwgbmNvbCA9IDQpICAgIyBTZXBhcmF0ZSBwbG90cyBmb3IgZWFjaCBjb3VudHJ5CgoKYGBgCgpNb2RlbHMgcHJlZGljdGluZyAiQ2FuIHBlb3BsZSBjb21tdW5pY2F0ZSB3aXRoIFg/IiByZXNwb25zZXMgYnkgY2F0ZWdvcnkuIFRoZSBwYWlyd2lzZSBjb250cmFzdHMgZnJvbSB0aGVzZSBtb2RlbHMgYXJlIHJlcG9ydGVkIGluIHRoZSBtYW51c2NyaXB0IHVuZGVyIHRoZSBzZWN0aW9uICJBZGRpdGlvbmFsIFF1ZXN0aW9ucyBSZWZsZWN0IERpZmZlcmVuY2VzIGluIEVwaXN0ZW1pYyBGcmFtZXMiCgpgYGB7cn0KIyBJIHdhbnQgMSByZWdyZXNzaW9uIHBlciBjb3VudHJ5ICg0IHRvdGFsKSB3aGVyZSByZXNwb25zZSBpcyBwcmVkaWN0ZWQgYnkgY2F0ZWdvcnkKCiMgVVMKbS5jb21tLnVzIDwtIGxtZXIocmVzcG9uc2UgfiBjYXRlZ29yeSArICgxfG9udF9zdWJqKSwgZGF0YSA9IGZpbHRlcihkYXRhX2xvbmdfY29tbSwgb250X2N0cnlfbmFtZSA9PSAiVVMiKSkKc3VtbWFyeShtLmNvbW0udXMpCgojI3BhaXJ3aXNlIGNvbnRyYXN0cwplbW0uY29tbS51cyA8LSBlbW1lYW5zKG0uY29tbS51cywgfiBjYXRlZ29yeSkKY29udHJhc3QoZW1tLmNvbW0udXMsIG1ldGhvZCA9ICJwYWlyd2lzZSIsIGFkanVzdCA9ICJub25lIikKCiMgR2hhbmEKbS5jb21tLmdoYW5hIDwtIGxtZXIocmVzcG9uc2UgfiBjYXRlZ29yeSArICgxfG9udF9zdWJqKSwgZGF0YSA9IGZpbHRlcihkYXRhX2xvbmdfY29tbSwgb250X2N0cnlfbmFtZSA9PSAiR2hhbmEiKSkKc3VtbWFyeShtLmNvbW0uZ2hhbmEpCgojI3BhaXJ3aXNlIGNvbnRyYXN0cwplbW0uY29tbS5naGFuYSA8LSBlbW1lYW5zKG0uY29tbS5naGFuYSwgfiBjYXRlZ29yeSkKY29udHJhc3QoZW1tLmNvbW0uZ2hhbmEsIG1ldGhvZCA9ICJwYWlyd2lzZSIsIGFkanVzdCA9ICJub25lIikKCiMgRWN1YWRvcgptLmNvbW0uZWN1YWRvciA8LSBsbWVyKHJlc3BvbnNlIH4gY2F0ZWdvcnkgKyAoMXxvbnRfc3ViaiksIGRhdGEgPSBmaWx0ZXIoZGF0YV9sb25nX2NvbW0sIG9udF9jdHJ5X25hbWUgPT0gIkVjdWFkb3IiKSkKc3VtbWFyeShtLmNvbW0uZWN1YWRvcikKCiMjcGFpcndpc2UgY29udHJhc3RzCmVtbS5jb21tLmVjdWFkb3IgPC0gZW1tZWFucyhtLmNvbW0uZWN1YWRvciwgfiBjYXRlZ29yeSkKY29udHJhc3QoZW1tLmNvbW0uZWN1YWRvciwgbWV0aG9kID0gInBhaXJ3aXNlIiwgYWRqdXN0ID0gIm5vbmUiKQoKIyBQZXJ1Cm0uY29tbS5wZXJ1IDwtIGxtZXIocmVzcG9uc2UgfiBjYXRlZ29yeSArICgxfG9udF9zdWJqKSwgZGF0YSA9IGZpbHRlcihkYXRhX2xvbmdfY29tbSwgb250X2N0cnlfbmFtZSA9PSAiUGVydSIpKQpzdW1tYXJ5KG0uY29tbS5wZXJ1KQoKIyNwYWlyd2lzZSBjb250cmFzdHMKZW1tLmNvbW0ucGVydSA8LSBlbW1lYW5zKG0uY29tbS5wZXJ1LCB+IGNhdGVnb3J5KQpjb250cmFzdChlbW0uY29tbS5wZXJ1LCBtZXRob2QgPSAicGFpcndpc2UiLCBhZGp1c3QgPSAibm9uZSIpCmBgYAoKIyBGaWd1cmUgMyAmIEFjY29tcGFueWluZyBBbmFseXNlcwoKYGBge3IsIGZpZy53aWR0aD0xNX0KZGF0YV9sb25nX3NwZWMgPC0gZGYgJT4lCiAgZmlsdGVyKG9udF9jdHJ5X25hbWUgJWluJSBjKCJVUyIsICJFY3VhZG9yIiwgIlBlcnUiKSkgJT4lICAjcXVlc3Rpb24gd2Fzbid0IGFza2VkIGluIGdoYW5hCiAgICBzZWxlY3Qob250X2N0cnlfbmFtZSwgb250X3N1YmosCiAgICAgICAgICAgc2NpX3NwZXhwX2dybSwgc3BuX3NwZXhwX2RlbSwgb3JkX3NwZXhwX211Zywgc2NpX3NwZXhwX2d2dCwgZmljX3NwZXhwX3NtbiwKICAgICAgICAgICBzY2lfc3BleHBfY25jLCBzcG5fc3BleHBfZ29kLCBvcmRfc3BleHBfdGJsLCBzcG5fc3BleHBfZ2hzLCBmaWNfc3BleHBfaGFwLCAgCiAgICAgICAgICAgIyBzY2lfc3BleHBfZ3JtLCBzcG5fc3BleHBfZGVtLCBvcmRfc3BleHBfbXVnLCBzY2lfc3BleHBfZnJjLCBmaWNfc3BleHBfc21uLCAgCiAgICAgICAgICAgIyBzY2lfc3BleHBfY25jLCBzcG5fc3BleHBfZ29kLCBvcmRfc3BleHBfdGJsLCBzcG5fc3BleHBfYWJzLCBmaWNfc3BleHBfa3drLCAgCiAgICAgICAgICAgc2NpX3NwZXhwX2ZsdSwgc3BuX3NwZXhwX3dlbiwgb3JkX3NwZXhwX211Zywgc2NpX3NwZXhwX3BhciwgZmljX3NwZXhwX3NwZCwgIAogICAgICAgICAgIHNjaV9zcGV4cF9jbmMsIHNwbl9zcGV4cF9nb2QsIG9yZF9zcGV4cF90YmwsIHNwbl9zcGV4cF9va3csIGZpY19zcGV4cF9yYW0sICAKICAgICAgICAgICBzcG5fc3BleHBfeXNoLCBzY2lfc3BleHBfcGFyLCBzcG5fc3BleHBfZ29kLCBvcmRfc3BleHBfdGJsLCAgCiAgICAgICAgICAgZmljX3NwZXhwX25qdCwgc3BuX3NwZXhwX2NoYSwgc2NpX3NwZXhwX2NuYywgIAogICAgICAgICAgIHNjaV9zcGV4cF9ncm0sIG5hc19zcGV4cF9yb24sIG9yZF9zcGV4cF90YXosIHNwbl9zcGV4cF9vbmksICAKICAgICAgICAgICBmaWNfc3BleHBfc21uLCBuYXNfc3BleHBfZGxwKSAlPiUgIAogICAgbXV0YXRlKGFjcm9zcyhjKC1vbnRfY3RyeV9uYW1lLCAtb250X3N1YmopLCBhcy5udW1lcmljKSkgJT4lCiAgICBwaXZvdF9sb25nZXIoYygtb250X2N0cnlfbmFtZSwgLW9udF9zdWJqKSwgbmFtZXNfdG8gPSAicXVlc3Rpb24iLCB2YWx1ZXNfdG8gPSAicmVzcG9uc2UiKSAlPiUgIAogICAgbXV0YXRlKHJlc3BvbnNlID0gaWZlbHNlKHJlc3BvbnNlID09IDk5LCAwLjUsIHJlc3BvbnNlKSkgJT4lCiAgICBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgJT4lICAKICAgIG11dGF0ZShjYXRlZ29yeSA9IHJlY29kZShxdWVzdGlvbiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX3NwZXhwX2dybSA9ICJTY2llbnRpZmljIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX3NwZXhwX2ZyYyA9ICJTY2llbnRpZmljIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9zcGV4cF9jbmMgPSAiU2NpZW50aWZpYyIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lfc3BleHBfZmx1ID0gIlNjaWVudGlmaWMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX3NwZXhwX3BhciA9ICJTY2llbnRpZmljIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX3NwZXhwX2d2dCA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRfc3BleHBfbXVnID0gIk9yZGluYXJ5IiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZF9zcGV4cF90YmwgPSAiT3JkaW5hcnkiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkX3NwZXhwX3RheiA9ICJPcmRpbmFyeSIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fc3BleHBfZ29kID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fc3BleHBfZGVtID0gIlN1cGVybmF0dXJhbCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9zcGV4cF93ZW4gPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9zcGV4cF9va3cgPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9zcGV4cF9hYnMgPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9zcGV4cF95c2ggPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9zcGV4cF9jaGEgPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hc19zcGV4cF9yb24gPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbl9zcGV4cF9vbmkgPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hc19zcGV4cF9kbHAgPSAiU3VwZXJuYXR1cmFsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BuX3NwZXhwX2docyA9ICJTdXBlcm5hdHVyYWwiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfc3BleHBfa3drID0gIkZpY3Rpb25hbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfc3BleHBfc21uID0gIkZpY3Rpb25hbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfc3BleHBfc3BkID0gIkZpY3Rpb25hbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfc3BleHBfcmFtID0gIkZpY3Rpb25hbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfc3BleHBfbmp0ID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX3NwZXhwX2hhcCA9ICJGaWN0aW9uYWwiKSwgIAogICAgICAgICAgIHJlc3BvbnNlX3R4dCA9IHJlY29kZShyZXNwb25zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYDBgID0gIkFueW9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAxYCA9ICJPbmx5IHNwZWNpZmljIHBlb3BsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAwLjVgID0gIklESyIpLAogICAgICAgICAgIHJlc3BvbnNlX3R4dCA9IGZhY3RvcihyZXNwb25zZV90eHQsIGxldmVscyA9IGMoIkFueW9uZSIsICJJREsiLCAiT25seSBzcGVjaWZpYyBwZW9wbGUiKSkpICU+JSAgCiAgICBmaWx0ZXIoIWlzLm5hKGNhdGVnb3J5KSkgIAoKICAjIENvbXB1dGUgYXZnIHBlciBjYXRlZ29yeSAgCiAgY2F0X29yZGVyIDwtIGRhdGFfbG9uZ19zcGVjICU+JQogICAgZ3JvdXBfYnkoY2F0ZWdvcnkpICU+JQogICAgc3VtbWFyaXNlKG0gPSBtZWFuKHJlc3BvbnNlKSkKICAgICAKCiAgIyBNZXJnZSBhdmcgYW5kIHJlb3JkZXIgY2F0ZWdvcnkgIAogIGRhdGFfbG9uZ19zcGVjIDwtIGRhdGFfbG9uZ19zcGVjICU+JSAgCiAgICBsZWZ0X2pvaW4oY2F0X29yZGVyLCBieSA9ICJjYXRlZ29yeSIpICU+JSAgCiAgICBtdXRhdGUoY2F0ZWdvcnkgPSBmY3RfcmVvcmRlcihjYXRlZ29yeSwgbSkpCiAgCiAgY29uZl9jb2xvcnMgPC0gc2V0TmFtZXMoYnJld2VyLnBhbCgzLCAiUmRZbEJ1IiksIAogICAgICAgICAgICAgICAgICAgICAgICAgICBjKCJBbnlvbmUiLCAiSURLIiwgIk9ubHkgc3BlY2lmaWMgcGVvcGxlIikpCiAgCiAgIyBjb25mX2NvbG9ycyA8LSBzZXROYW1lcyhicmV3ZXIucGFsKDMsICJTZXQyIiksIAogICMgICAgICAgICAgICAgICAgICAgICAgICAgYygiQW55b25lIiwgIklESyIsICJPbmx5IHNwZWNpZmljIHBlb3BsZSIpKQoKICAjIENyZWF0ZSBzdGFja2VkIGJhciBwbG90ICAKZGF0YV9sb25nX3NwZWMgJT4lCiAgbXV0YXRlKGNhdGVnb3J5ID0gZmFjdG9yKGNhdGVnb3J5LCBsZXZlbHMgPSBjKCJPcmRpbmFyeSIsICJTY2llbnRpZmljIiwgIlN1cGVybmF0dXJhbCIsICJGaWN0aW9uYWwiKSksIAogICAgICAgICBvbnRfY3RyeV9uYW1lID0gZmFjdG9yKG9udF9jdHJ5X25hbWUsIGxldmVscyA9IGxldmVsc19jb3VudHJ5KSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gY2F0ZWdvcnksIGZpbGwgPSByZXNwb25zZV90eHQpKSArICAKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyAgIyBTdGFja2VkIHByb3BvcnRpb25zCiAgIyBnZW9tX3RleHQoc3RhdCA9ICJjb3VudCIsIGFlcyhsYWJlbCA9IGFmdGVyX3N0YXQoY291bnQpKSwgICAKICAjICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2ZpbGwodmp1c3QgPSAwLjUpLCAgIAogICMgICAgICAgICAgIHNpemUgPSA2LCBjb2xvciA9ICJ3aGl0ZSIpICsgIAogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsgCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY29uZl9jb2xvcnMsIGRyb3AgPSBGQUxTRSkgKyAKICB0aGVtZV9idygpICsgIAogIGxhYnMoCiAgICB4ID0gIkNhdGVnb3J5IG9mIE9iamVjdHMiLCAgCiAgICB5ID0gIlByb3BvcnRpb24gb2YgUmVzcG9uc2VzIiwgIAogICAgZmlsbCA9ICJSZXNwb25zZXMiLCAgCiAgICB0aXRsZSA9ICJDYW4gX18gYmUgZXhwZXJpZW5jZWQgYnkgYW55b25lIG9yIG9ubHkgYnkgc3BlY2lmaWMgcGVvcGxlP1xuYnkgQ2F0ZWdvcnkgYW5kIEZpZWxkIFNpdGUiCiAgKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1LCBhbmdsZSA9IC0zNSwgdmp1c3QgPSAxLCBoanVzdCA9IDApLAogICAgICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgpLAogICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgpLAogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjUpLCAKICAgICAgICBzdHJpcC50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4KSwgCiAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgCiAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPTE4KSkgKwogIGZhY2V0X3dyYXAofiBvbnRfY3RyeV9uYW1lLCBuY29sID0gNCkgICMgU2VwYXJhdGUgcGxvdHMgZm9yIGVhY2ggY291bnRyeQpgYGAKCk1vZGVscyBwcmVkaWN0aW5nICJDYW4gWCBiZSBleHBlcmllbmNlZCBieSBhbnlvbmUgb3Igb25seSBieSBzcGVjaWZpYyBwZW9wbGU/IiByZXNwb25zZXMgYnkgY2F0ZWdvcnkuIFRoZSBwYWlyd2lzZSBjb250cmFzdHMgZnJvbSB0aGVzZSBtb2RlbHMgYXJlIHJlcG9ydGVkIGluIHRoZSBtYW51c2NyaXB0IHVuZGVyIHRoZSBzZWN0aW9uICJBZGRpdGlvbmFsIFF1ZXN0aW9ucyBSZWZsZWN0IERpZmZlcmVuY2VzIGluIEVwaXN0ZW1pYyBGcmFtZXMiCgpgYGB7cn0KIyAxIHJlZ3Jlc3Npb24gcGVyIGNvdW50cnkgKDQgdG90YWwpIHdoZXJlIHJlc3BvbnNlIGlzIHByZWRpY3RlZCBieSBjYXRlZ29yeQoKIyBVUwptLnNwZWMudXMgPC0gbG1lcihyZXNwb25zZSB+IGNhdGVnb3J5ICsgKDF8b250X3N1YmopLCBkYXRhID0gZmlsdGVyKGRhdGFfbG9uZ19zcGVjLCBvbnRfY3RyeV9uYW1lID09ICJVUyIpKQpzdW1tYXJ5KG0uc3BlYy51cykKCiMjcGFpcndpc2UgY29udHJhc3RzCmVtbS5zcGVjLnVzIDwtIGVtbWVhbnMobS5zcGVjLnVzLCB+IGNhdGVnb3J5KQpjb250cmFzdChlbW0uc3BlYy51cywgbWV0aG9kID0gInBhaXJ3aXNlIiwgYWRqdXN0ID0gIm5vbmUiKQoKIyBFY3VhZG9yCm0uc3BlYy5lY3VhZG9yIDwtIGxtZXIocmVzcG9uc2UgfiBjYXRlZ29yeSArICgxfG9udF9zdWJqKSwgZGF0YSA9IGZpbHRlcihkYXRhX2xvbmdfc3BlYywgb250X2N0cnlfbmFtZSA9PSAiRWN1YWRvciIpKQpzdW1tYXJ5KG0uc3BlYy5lY3VhZG9yKQoKIyNwYWlyd2lzZSBjb250cmFzdHMKZW1tLnNwZWMuZWN1YWRvciA8LSBlbW1lYW5zKG0uc3BlYy5lY3VhZG9yLCB+IGNhdGVnb3J5KQpjb250cmFzdChlbW0uc3BlYy5lY3VhZG9yLCBtZXRob2QgPSAicGFpcndpc2UiLCBhZGp1c3QgPSAibm9uZSIpCgojIFBlcnUKbS5zcGVjLnBlcnUgPC0gbG1lcihyZXNwb25zZSB+IGNhdGVnb3J5ICsgKDF8b250X3N1YmopLCBkYXRhID0gZmlsdGVyKGRhdGFfbG9uZ19zcGVjLCBvbnRfY3RyeV9uYW1lID09ICJQZXJ1IikpCnN1bW1hcnkobS5zcGVjLnBlcnUpCgojI3BhaXJ3aXNlIGNvbnRyYXN0cwplbW0uc3BlYy5wZXJ1IDwtIGVtbWVhbnMobS5zcGVjLnBlcnUsIH4gY2F0ZWdvcnkpCmNvbnRyYXN0KGVtbS5zcGVjLnBlcnUsIG1ldGhvZCA9ICJwYWlyd2lzZSIsIGFkanVzdCA9ICJub25lIikKCmBgYAoKIyBGaWd1cmUgNCAKCkNhbiBfXyBiZSBzZW5zZWQ/IFRoaXMgY29tYmluZXMgYWNyb3NzIGFsbCBzZW5zb3J5IHF1ZXN0aW9ucyBmb3IgZWFjaCBpdGVtLiBUaGUgaXRlbXMgZGlmZmVyZWQgZnJvbSBjb3VudHJ5IHRvIGNvdW50cnkgYW5kIHZlcnNpb24gdG8gdmVyc2lvbi4gQnV0IGFsbW9zdCBhbGwgY29udGFpbiB0aGUgcXVlc3Rpb25zOiBzZWUsIGhlYXIsIHNtZWxsLCB0b3VjaCwgZmVlbC4gTWFueSBidXQgbm90IGFsbCBhbHNvIGhhZCBhIHRhc3RlIHF1ZXN0aW9uLiAKCmBgYHtyLCBmaWcud2lkdGg9MTJ9CiMgQ29tYmluZSBhbGwgY291bnRyeSBkYXRhCmNvbWJpbmVkX3NlbnMgPC0gZGZfc2VucyAlPiUKICBmaWx0ZXIob250X2N0cnlfbmFtZSAlaW4lIGMoIlVTIiwgIkdoYW5hIiwgIkVjdWFkb3IiLCAiUGVydSIpKSAlPiUKICBzZWxlY3Qob250X2N0cnlfbmFtZSwgCiAgICAgICAgIHNlbnNfZ3JtLCBzZW5zX2RlbSwgc2Vuc19tdWcsIHNlbnNfZnJjLCBzZW5zX3NtbiwKICAgICAgICAgc2Vuc19jbmMsIHNlbnNfZ29kLCBzZW5zX3RibCwgc2Vuc19hYnMsIHNlbnNfa3drLAogICAgICAgICBzZW5zX2ZsdSwgc2Vuc193ZW4sIHNlbnNfcGFyLCBzZW5zX3NwZCwgc2Vuc19va3csIHNlbnNfcmFtLCAKICAgICAgICAgc2Vuc195c2gsIHNlbnNfbmp0LCBzZW5zX2NoYSwgc2Vuc19yb24sIHNlbnNfdGF6LCBzZW5zX29uaSwgc2Vuc19kbHAKICAgICAgICAgKSAlPiUKICBtdXRhdGUoYWNyb3NzKC1vbnRfY3RyeV9uYW1lLCBhcy5udW1lcmljKSkgJT4lCiAgcGl2b3RfbG9uZ2VyKC1vbnRfY3RyeV9uYW1lLCBuYW1lc190byA9ICJxdWVzdGlvbiIsIHZhbHVlc190byA9ICJyZXNwb25zZSIpICU+JQogIG11dGF0ZSgKICAgIHF1ZXN0aW9uX3R5cGUgPSByZWNvZGUocXVlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfZ3JtID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX2ZyYyA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19jbmMgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfZmx1ID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX3BhciA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19tdWcgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX3RibCA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfdGF6ID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19nb2QgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19kZW0gPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc193ZW4gPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19va3cgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19hYnMgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc195c2ggPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19jaGEgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19yb24gPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19vbmkgPSAiU3VwZXJuYXR1cmFsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfZGxwID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfa3drID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfc21uID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfc3BkID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfcmFtID0gIkZpY3Rpb25hbCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX25qdCA9ICJGaWN0aW9uYWwiKSwgCiAgICBxdWVzdGlvbl90eXBlID0gZmFjdG9yKHF1ZXN0aW9uX3R5cGUsIGxldmVscyA9IGxldmVsc190eXBlKSwgCiAgICBvbnRfY3RyeV9uYW1lID0gZmFjdG9yKG9udF9jdHJ5X25hbWUsIGxldmVscyA9IGxldmVsc19jb3VudHJ5KQogICkgJT4lCiAgZmlsdGVyKCFpcy5uYShyZXNwb25zZSkpICU+JQogIGdyb3VwX2J5KG9udF9jdHJ5X25hbWUsIHF1ZXN0aW9uX3R5cGUpICU+JQogIHN1bW1hcmlzZSgKICAgIHllc19jb3VudCA9IHN1bShyZXNwb25zZSA9PSAxKSwKICAgIHRvdGFsX2NvdW50ID0gbigpLAogICAgcHJvcG9ydGlvbl95ZXMgPSB5ZXNfY291bnQgLyB0b3RhbF9jb3VudAogICkgJT4lCiAgYXJyYW5nZShkZXNjKHByb3BvcnRpb25feWVzKSkKCiMgQ2FsY3VsYXRlIG92ZXJhbGwgcHJvcG9ydGlvbnMgZm9yIHNvcnRpbmcKb3ZlcmFsbF9vcmRlciA8LSBjb21iaW5lZF9zZW5zICU+JQogIGdyb3VwX2J5KHF1ZXN0aW9uX3R5cGUpICU+JQogIHN1bW1hcmlzZShvdmVyYWxsX3Byb3BvcnRpb24gPSBzdW0oeWVzX2NvdW50KSAvIHN1bSh0b3RhbF9jb3VudCkpICU+JQogIGFycmFuZ2UoZGVzYyhvdmVyYWxsX3Byb3BvcnRpb24pKQoKIyBSZW9yZGVyIGNvbWJpbmVkIGRhdGEgYnkgb3ZlcmFsbCBwcm9wb3J0aW9uCmNvbWJpbmVkX3NlbnMgPC0gY29tYmluZWRfc2VucyAlPiUKICBtdXRhdGUocXVlc3Rpb25fdHlwZSA9IGZhY3RvcihxdWVzdGlvbl90eXBlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBvdmVyYWxsX29yZGVyJHF1ZXN0aW9uX3R5cGUpKQoKCiMgUGxvdCB3aXRoIHJlb3JkZXJlZCBiYXJzIC0tIHggYXhpcyBpcyBjb3VudHJ5CmNvbWJpbmVkX3NlbnMgJT4lCiAgZ2dwbG90KGFlcyh4ID0gb250X2N0cnlfbmFtZSwgeSA9IHByb3BvcnRpb25feWVzLCBmaWxsID0gcXVlc3Rpb25fdHlwZSkpICsKICBnZW9tX2NvbChwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC44KSwgd2lkdGggPSAwLjcpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50X2Zvcm1hdChhY2N1cmFjeSA9IDEpKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQyIiwgbmFtZSA9ICJRdWVzdGlvbiBUeXBlIikgKwogIHRoZW1lX2J3KCkgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQocHJvcG9ydGlvbl95ZXMsIGFjY3VyYWN5ID0gMSkpLAogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC44KSwgdmp1c3QgPSAyLCBzaXplID0gNCkgKwogIGxhYnMoCiAgICB0aXRsZSA9ICJDYW4gX18gYmUgc2Vuc2VkPzogUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMgYnkgRmllbGQgU2l0ZSIsCiAgICB4ID0gIkZpZWxkIFNpdGUiLAogICAgeSA9ICJDb2xsYXRlZCAnWWVzJyBSZXNwb25zZXMgdG8gU2Vuc2UgUXVlc3Rpb25zIgogICkgKyAKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQpLAogICAgICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgpLAogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksCiAgICAgICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCksCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjMpLCAKICAgICAgICBzdHJpcC50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE3KSwgCiAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgCiAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPTE4KSkKYGBgCgoKIyBGaWd1cmUgNSAKCmBgYHtyLCBmaWcud2lkdGg9MTJ9CiMgQ29tYmluZSBhbGwgY291bnRyeSBkYXRhCmNvbWJpbmVkX3VzZW5zIDwtIGRmX3VzZW5zICU+JQogIGZpbHRlcihvbnRfY3RyeV9uYW1lICVpbiUgYygiVVMiLCAiR2hhbmEiLCAiRWN1YWRvciIsICJQZXJ1IikpICU+JQogIHNlbGVjdChvbnRfY3RyeV9uYW1lLCAKICAgICAgICAgdXNlbnNfZ3JtLCB1c2Vuc19kZW0sIHVzZW5zX211ZywgdXNlbnNfZnJjLCB1c2Vuc19zbW4sCiAgICAgICAgIHVzZW5zX2NuYywgdXNlbnNfZ29kLCB1c2Vuc190YmwsIHVzZW5zX2FicywgdXNlbnNfa3drLAogICAgICAgICB1c2Vuc19mbHUsIHVzZW5zX3dlbiwgdXNlbnNfcGFyLCB1c2Vuc19zcGQsIHVzZW5zX29rdywgdXNlbnNfcmFtLCAKICAgICAgICAgdXNlbnNfeXNoLCB1c2Vuc19uanQsIHVzZW5zX2NoYSwgdXNlbnNfcm9uLCB1c2Vuc190YXosIHVzZW5zX29uaSwgdXNlbnNfZGxwCiAgICAgICAgICkgJT4lCiAgbXV0YXRlKGFjcm9zcygtb250X2N0cnlfbmFtZSwgYXMubnVtZXJpYykpICU+JQogIHBpdm90X2xvbmdlcigtb250X2N0cnlfbmFtZSwgbmFtZXNfdG8gPSAicXVlc3Rpb24iLCB2YWx1ZXNfdG8gPSAicmVzcG9uc2UiKSAlPiUKICBtdXRhdGUoCiAgICBxdWVzdGlvbl90eXBlID0gcmVjb2RlKHF1ZXN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19ncm0gPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2ZyYyA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfY25jID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19mbHUgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3BhciA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfbXVnID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfdGJsID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfdGF6ID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfZ29kID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2RlbSA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc193ZW4gPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfb2t3ID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2FicyA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc195c2ggPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfY2hhID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3JvbiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19vbmkgPSAiU3VwZXJuYXR1cmFsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2RscCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19rd2sgPSAiRmljdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfc21uID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3NwZCA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19yYW0gPSAiRmljdGlvbmFsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX25qdCA9ICJGaWN0aW9uYWwiKSwKICAgIHF1ZXN0aW9uX3R5cGUgPSBmYWN0b3IocXVlc3Rpb25fdHlwZSwgbGV2ZWxzID0gbGV2ZWxzX3R5cGUpLCAKICAgIG9udF9jdHJ5X25hbWUgPSBmYWN0b3Iob250X2N0cnlfbmFtZSwgbGV2ZWxzID0gbGV2ZWxzX2NvdW50cnkpCiAgKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgJT4lCiAgZ3JvdXBfYnkob250X2N0cnlfbmFtZSwgcXVlc3Rpb25fdHlwZSkgJT4lCiAgc3VtbWFyaXNlKAogICAgeWVzX2NvdW50ID0gc3VtKHJlc3BvbnNlID09IDEpLAogICAgdG90YWxfY291bnQgPSBuKCksCiAgICBwcm9wb3J0aW9uX3llcyA9IHllc19jb3VudCAvIHRvdGFsX2NvdW50CiAgKSAlPiUKICBhcnJhbmdlKGRlc2MocHJvcG9ydGlvbl95ZXMpKQoKIyBDYWxjdWxhdGUgb3ZlcmFsbCBwcm9wb3J0aW9ucyBmb3Igc29ydGluZwpvdmVyYWxsX29yZGVyIDwtIGNvbWJpbmVkX3VzZW5zICU+JQogIGdyb3VwX2J5KHF1ZXN0aW9uX3R5cGUpICU+JQogIHN1bW1hcmlzZShvdmVyYWxsX3Byb3BvcnRpb24gPSBzdW0oeWVzX2NvdW50KSAvIHN1bSh0b3RhbF9jb3VudCkpICU+JQogIGFycmFuZ2UoZGVzYyhvdmVyYWxsX3Byb3BvcnRpb24pKQoKIyBSZW9yZGVyIGNvbWJpbmVkIGRhdGEgYnkgb3ZlcmFsbCBwcm9wb3J0aW9uCmNvbWJpbmVkX3VzZW5zIDwtIGNvbWJpbmVkX3VzZW5zICU+JQogIG11dGF0ZShxdWVzdGlvbl90eXBlID0gZmFjdG9yKHF1ZXN0aW9uX3R5cGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IG92ZXJhbGxfb3JkZXIkcXVlc3Rpb25fdHlwZSkpCgoKIyBQbG90IHdpdGggcmVvcmRlcmVkIGJhcnMgLS0geCBheGlzIGlzIGNvdW50cnkgCmNvbWJpbmVkX3VzZW5zICU+JQogIG11dGF0ZSgKICAgIHF1ZXN0aW9uX3R5cGUgPSBmYWN0b3IocXVlc3Rpb25fdHlwZSwgbGV2ZWxzID0gbGV2ZWxzX3R5cGUpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBvbnRfY3RyeV9uYW1lLCB5ID0gcHJvcG9ydGlvbl95ZXMsIGZpbGwgPSBxdWVzdGlvbl90eXBlKSkgKwogIGdlb21fY29sKHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjgpLCB3aWR0aCA9IDAuNykgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDIiLCBuYW1lID0gIlF1ZXN0aW9uIFR5cGUiKSArCiAgdGhlbWVfYncoKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChwcm9wb3J0aW9uX3llcywgYWNjdXJhY3kgPSAxKSksCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjgpLCB2anVzdCA9IDIsIHNpemUgPSA0KSArCiAgbGFicygKICAgIHRpdGxlID0gIkhhdmUgeW91IGV2ZXIgc2Vuc2VkIF9fPzogUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMgYnkgRmllbGQgU2l0ZSIsCiAgICB4ID0gIkZpZWxkIFNpdGUiLAogICAgeSA9ICJDb2xsYXRlZCAnWWVzJyBSZXNwb25zZXMgdG8gU2Vuc2UgUXVlc3Rpb25zIgogICkgKyAKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQpLAogICAgICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgpLAogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksCiAgICAgICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCksCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjMpLCAKICAgICAgICBzdHJpcC50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE3KSwgCiAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgCiAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPTE4KSkKCmBgYAoKCiMgVGFibGUgMyAmIEFjY29tcGFueWluZyBBbmFseXNlcwoKTW9kZWxzIHByZWRpY3RpbmcgY29uZmlkZW5jZSB4IGV4aXN0ZW5jZSBzY29yZXMgd2l0aCBjb25zZW5zdXMgYW5kIHNlbnNvcnkgZXhwZXJpZW5jZSBzY29yZXMuIFRoZSByZXN1bHRzIGFyZSByZXBvcnRlZCBpbiBUYWJsZSAzIGluIHRoZSBtYW51c2NyaXB0CgpgYGB7cn0KIyBmb3IgbW9yZSBkZXRhaWxzIG9uIGNvbnNlbnN1cyBzY29yZSBjYWxjdWxhdGlvbiwgc2VlIHRoZSBkYXRhIGZyYW1lIHdoZXJlIGl0IGlzIGNyZWF0ZWQgaW4gRGF0YSBXcmFuZ2xpbmcgCgptLmNvbmYgPC0gbG1lcihjb25mX2RpciB+IGNvbnNlbnN1c19leGNsX3NlbGYgKyB1c2Vuc19yZXNwb25zZSArICgxIHwgb250X2N0cnlfbmFtZS9vbnRfc3ViaiksIAogICAgICAgICAgICAgIGRhdGEgPSBkZl9leHRfdXNlbnNfY29uZikKc3VtbWFyeShtLmNvbmYpCgojIG1ha2luZyBUYWJsZSAzCm0uY29uZiAlPiUgCiAgICB0YmxfcmVncmVzc2lvbihpbnRlcmNlcHQgPSBUUlVFKSAlPiUgCiAgICBhc19ndCgpICU+JSAKICAgIGd0Ojp0YWJfaGVhZGVyKHRpdGxlID0gIlJlZ3Jlc3Npb24gUmVzdWx0czogRWZmZWN0cyBvZiBDb25zZW5zdXMgYW5kIFNlbnNvcnkgRXZpZGVuY2Ugb24gQ29uZmlkZW5jZSIpCmBgYAoKCiMgQUxURVJOQVRFIENPRElORyAmIEZJRyAxIGV0IGFsCgpgYGB7cn0KZGZfZXh0X3VzZW5zX2NvbmZfQUxUIDwtIGRmX2V4dF91c2Vuc19jb25mICU+JSAKICBtdXRhdGUoZXh0X2RpciA9IGNhc2Vfd2hlbigKICAgIHJlc3BvbnNlID09IDEgfiAxLAogICAgcmVzcG9uc2UgPT0gMCB+IC0xLAogICAgcmVzcG9uc2UgPT0gMC41IH4gMCwKICAgIFRSVUUgfiByZXNwb25zZSksIAogICAgZXh0X2xhYmVsID0gY2FzZV93aGVuKAogICAgICBleHRfZGlyID09IDEgfiAiZXhpc3QiLAogICAgICBleHRfZGlyID09IC0xIH4gIm5vdCIsIAogICAgICBleHRfZGlyID09IDAgfiAidW5zdXJlIiksCiAgICBjb25mX2RpciA9IGNhc2Vfd2hlbigKICAgICAgZXh0X2xhYmVsID09ICJleGlzdCIgfiBleHRfZGlyICsgY29uZl9yZXNwb25zZSwKICAgICAgZXh0X2xhYmVsID09ICJub3QiIH4gZXh0X2RpciAtIGNvbmZfcmVzcG9uc2UsCiAgICAgIGV4dF9sYWJlbCA9PSAidW5zdXJlIiB+IDApLAogICAgY29uZl9kaXJfdGV4dCA9IGNhc2Vfd2hlbigKICAgICAgY29uZl9kaXIgPT0gLTQgfiAiVmVyeSBzdXJlIGRvZXNuJ3QgZXhpc3QiLAogICAgICBjb25mX2RpciA9PSAtMyB+ICJQcmV0dHkgc3VyZSBkb2Vzbid0IGV4aXN0IiwKICAgICAgY29uZl9kaXIgPT0gLTIgfiAiU29tZXdoYXQgc3VyZSBkb2Vzbid0IGV4aXN0IiwKICAgICAgY29uZl9kaXIgPT0gLTEgfiAiTm90IHN1cmUgZG9lc24ndCBleGlzdCIsCiAgICAgIGNvbmZfZGlyID09IDAgfiAiTm90IHN1cmUiLAogICAgICBjb25mX2RpciA9PSAxIH4gIk5vdCBzdXJlIGV4aXN0cyIsCiAgICAgIGNvbmZfZGlyID09IDIgfiAiU29tZXdoYXQgc3VyZSBleGlzdHMiLAogICAgICBjb25mX2RpciA9PSAzIH4gIlByZXR0eSBzdXJlIGV4aXN0cyIsCiAgICAgIGNvbmZfZGlyID09IDQgfiAiVmVyeSBzdXJlIGV4aXN0cyIpLCAKICAgIGNvbmZfZGlyX3RleHQgPSBmYWN0b3IoY29uZl9kaXJfdGV4dCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIlZlcnkgc3VyZSBkb2Vzbid0IGV4aXN0IiwgIlByZXR0eSBzdXJlIGRvZXNuJ3QgZXhpc3QiLCAiU29tZXdoYXQgc3VyZSBkb2Vzbid0IGV4aXN0IiwgIk5vdCBzdXJlIGRvZXNuJ3QgZXhpc3QiLCAiTm90IHN1cmUiLCAiTm90IHN1cmUgZXhpc3RzIiwgIlNvbWV3aGF0IHN1cmUgZXhpc3RzIiwgIlByZXR0eSBzdXJlIGV4aXN0cyIsICJWZXJ5IHN1cmUgZXhpc3RzIikpCiAgKQpgYGAKCmBgYHtyLCBmaWcud2lkdGg9MTV9CmNvbmZfY29sb3JzIDwtIChSQ29sb3JCcmV3ZXI6OmJyZXdlci5wYWwoOSwgIlJkWWxCdSIpKQoKIyBDcmVhdGUgc3RhY2tlZCBiYXIgcGxvdCAgCmRmX2V4dF91c2Vuc19jb25mX0FMVCAlPiUgCiAgZmlsdGVyKCFpcy5uYShjb25mX2Rpcl90ZXh0KSwgIWlzLm5hKGNhdGVnb3J5KSkgJT4lIAogIG11dGF0ZShjYXRlZ29yeSA9IGZhY3RvcihjYXRlZ29yeSwgbGV2ZWxzID0gYygiT3JkaW5hcnkiLCAiU2NpZW50aWZpYyIsICJTdXBlcm5hdHVyYWwiLCAiRmljdGlvbmFsIikpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBjYXRlZ29yeSwgZmlsbCA9IGNvbmZfZGlyX3RleHQpKSArICAKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyAgIyBTdGFja2VkIHByb3BvcnRpb25zCiAgIyBnZW9tX3RleHQoc3RhdCA9ICJjb3VudCIsIGFlcyhsYWJlbCA9IGFmdGVyX3N0YXQoY291bnQpKSwgICAKICAjICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2ZpbGwodmp1c3QgPSAwLjUpLCAgIAogICMgICAgICAgICAgIHNpemUgPSA2LCBjb2xvciA9ICJ3aGl0ZSIpICsgIAogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsgCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY29uZl9jb2xvcnMsIGRyb3AgPSBGQUxTRSkgKyAKICB0aGVtZV9idygpICsgIAogIGxhYnMoCiAgICB4ID0gIkNhdGVnb3J5IG9mIE9iamVjdHMiLCAgCiAgICB5ID0gIlByb3BvcnRpb24gb2YgUmVzcG9uc2VzIiwgIAogICAgZmlsbCA9ICJDb25maWRlbmNlIHggRXhpc3RlbmNlIiwgIAogICAgdGl0bGUgPSAiQ29uZmlkZW5jZSB4IEV4aXN0ZW5jZSBieSBDYXRlZ29yeSBhbmQgQ291bnRyeSIKICApICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUsIGFuZ2xlID0gLTM1LCB2anVzdCA9IDEsIGhqdXN0ID0gMCksCiAgICAgICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCksCiAgICAgICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCksCiAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwKICAgICAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNSksIAogICAgICAgIHN0cmlwLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgpLCAKICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYpLCAKICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9MTgpKSArCiAgZmFjZXRfd3JhcCh+IG9udF9jdHJ5X25hbWUsIG5jb2wgPSA0KSAgICMgU2VwYXJhdGUgcGxvdHMgZm9yIGVhY2ggY291bnRyeQpgYGAKCmBgYHtyfQojIDEgcmVncmVzc2lvbiBwZXIgY291bnRyeSAoNCB0b3RhbCkgd2hlcmUgcmVzcG9uc2UgaXMgcHJlZGljdGVkIGJ5IGNhdGVnb3J5CgojIFVTCm0udXMgPC0gbG1lcihjb25mX2RpciB+IHF1ZXN0aW9uX3R5cGUgKyAoMXxvbnRfc3ViaiksIGRhdGEgPSBmaWx0ZXIoZGZfZXh0X3VzZW5zX2NvbmZfQUxULCBvbnRfY3RyeV9uYW1lID09ICJVUyIpKQpzdW1tYXJ5KG0udXMpCgojI3BhaXJ3aXNlIGNvbnRyYXN0cwplbW0udXMgPC0gZW1tZWFucyhtLnVzLCB+IHF1ZXN0aW9uX3R5cGUpCmNvbnRyYXN0KGVtbS51cywgbWV0aG9kID0gInBhaXJ3aXNlIiwgYWRqdXN0ID0gIm5vbmUiKQoKIyBHaGFuYQptLmdoYW5hIDwtIGxtZXIoY29uZl9kaXIgfiBxdWVzdGlvbl90eXBlICsgKDF8b250X3N1YmopLCBkYXRhID0gZmlsdGVyKGRmX2V4dF91c2Vuc19jb25mX0FMVCwgb250X2N0cnlfbmFtZSA9PSAiR2hhbmEiKSkKc3VtbWFyeShtLmdoYW5hKQoKIyNwYWlyd2lzZSBjb250cmFzdHMKZW1tLmdoYW5hIDwtIGVtbWVhbnMobS5naGFuYSwgfiBxdWVzdGlvbl90eXBlKQpjb250cmFzdChlbW0uZ2hhbmEsIG1ldGhvZCA9ICJwYWlyd2lzZSIsIGFkanVzdCA9ICJub25lIikKCiMgRWN1YWRvcgptLmVjdWFkb3IgPC0gbG1lcihjb25mX2RpciB+IHF1ZXN0aW9uX3R5cGUgKyAoMXxvbnRfc3ViaiksIGRhdGEgPSBmaWx0ZXIoZGZfZXh0X3VzZW5zX2NvbmZfQUxULCBvbnRfY3RyeV9uYW1lID09ICJFY3VhZG9yIikpCnN1bW1hcnkobS5lY3VhZG9yKQoKIyNwYWlyd2lzZSBjb250cmFzdHMKZW1tLmVjdWFkb3IgPC0gZW1tZWFucyhtLmVjdWFkb3IsIH4gcXVlc3Rpb25fdHlwZSkKY29udHJhc3QoZW1tLmVjdWFkb3IsIG1ldGhvZCA9ICJwYWlyd2lzZSIsIGFkanVzdCA9ICJub25lIikKCiMgUGVydQptLnBlcnUgPC0gbG1lcihjb25mX2RpciB+IHF1ZXN0aW9uX3R5cGUgKyAoMXxvbnRfc3ViaiksIGRhdGEgPSBmaWx0ZXIoZGZfZXh0X3VzZW5zX2NvbmZfQUxULCBvbnRfY3RyeV9uYW1lID09ICJQZXJ1IikpCnN1bW1hcnkobS5wZXJ1KQoKIyNwYWlyd2lzZSBjb250cmFzdHMKZW1tLnBlcnUgPC0gZW1tZWFucyhtLnBlcnUsIH4gcXVlc3Rpb25fdHlwZSkKY29udHJhc3QoZW1tLnBlcnUsIG1ldGhvZCA9ICJwYWlyd2lzZSIsIGFkanVzdCA9ICJub25lIikKCmBgYAoKTW9kZWwgcHJlZGljdGluZyBjb25maWRlbmNlIHggZXhpc3RlbmNlIHNjb3JlcyBieSBjYXRlZ29yeSBwb29saW5nIGFjcm9zcyBub24tVVMgY291bnRyaWVzLiBUaGVzZSByZXN1bHRzIHNob3cgdGhhdCB3aGVuIHlvdSBjb21iaW5lIGFsbCBub24tVVMgY291bnRyeSByZXNwb25zZXMgdG9nZXRoZXIsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gb3JkaW5hcnkgYW5kIHN1cGVybmF0dXJhbCBjb25maWRlbmNlIHJhdGluZ3MgYXJlIHNpZ25pZmljYW50LiAKCmBgYHtyfQojY29tYmluZ2luZyBub24gdXMgY291bnRyaWVzCm0ubm9uLnVzIDwtIGxtZXIoY29uZl9kaXIgfiBxdWVzdGlvbl90eXBlICsgKDF8b250X2N0cnlfbmFtZS9vbnRfc3ViaiksIGRhdGEgPSBmaWx0ZXIoZGZfZXh0X3VzZW5zX2NvbmZfQUxULCBvbnRfY3RyeV9uYW1lICE9ICJVUyIpKQpzdW1tYXJ5KG0ubm9uLnVzKQoKIyNwYWlyd2lzZSBjb250cmFzdHMKZW1tLm5vbi51cyA8LSBlbW1lYW5zKG0ubm9uLnVzLCB+IHF1ZXN0aW9uX3R5cGUpCmNvbnRyYXN0KGVtbS5ub24udXMsIG1ldGhvZCA9ICJwYWlyd2lzZSIsIGFkanVzdCA9ICJub25lIikKYGBgCgpNb2RlbCBwcmVkaWN0aW5nIGNvbmZpZGVuY2UgeCBleGlzdGVuY2Ugc2NvcmVzIGJ5IGNhdGVnb3J5LCBidXQgb25seSBmb3IgaGlnaGVzdCBjb250cmFzdCBvcmRpbmFyeSB2cy4gc3VwZXJuYXR1cmFsIGl0ZW1zIChjb2ZmZWUgY3VwcyAmIHRhYmxlcyB2cy4gR29kICYgZGVtb25zKS4gVGhlc2UgcmVzdWx0cyBzaG93IHRoYXQgdGhlc2UgaGlnaGVzdCBjb250cmFzdHMgYXJlIHNpZ25pZmljYW50bHkgZGlmZmVyZW50IGluIHRoZSBVUyBhbmQgR2hhbmEsIGJ1dCBub3QgaW4gRWN1YWRvciBhbmQgUGVydSAoaW4gRWN1YWRvciwgb3VyIHNtYWxsZXN0IHNhbXBsZSBzaXplLCB0aGVyZSBhcmUgaGludHMgdGhhdCB0aGlzIGVmZmVjdCBtaWdodCBiZSBmb3VuZCBpbiBmdXR1cmUgc2ltaWxhciBzdHVkaWVzKS4gU2VlIEFwcGVuZGl4IEEgZm9yIGZ1bGwgY29uZmlkZW5jZSBhbmQgZXhpc3RlbmNlIHJhdGluZ3MgYnJva2VuIGRvd24gYnkgaXRlbSwgdmVyc2lvbiwgYW5kIGNvdW50cnkuIAoKYGBge3J9CiMgVVMgLS1tdWdzLCB0YWJsZXMsIGdvZCwgZGVtb25zCm0ubXVnLnVzIDwtIGxtZXIoY29uZl9kaXIgfiBxdWVzdGlvbl90eXBlICsgKDF8b250X3N1YmopLCBkYXRhID0gZGZfZXh0X3VzZW5zX2NvbmZfQUxUICU+JSAKICAgICAgICAgICAgICAgZmlsdGVyKG9udF9jdHJ5X25hbWUgPT0gIlVTIiwKICAgICAgICAgICAgICAgICAgICAgIGl0ZW1fY29kZSAlaW4lIGMoIm11ZyIsICJ0YmwiLCAiZGVtIiwgImdvZCIpKSkKc3VtbWFyeShtLm11Zy51cykKCiMgR2hhbmEgLS1tdWdzLCB0YWJsZXMsIGdvZCwgZGVtb25zCm0ubXVnLmdoYW5hIDwtIGxtZXIoY29uZl9kaXIgfiBxdWVzdGlvbl90eXBlICsgKDF8b250X3N1YmopLCBkYXRhID0gZGZfZXh0X3VzZW5zX2NvbmZfQUxUICU+JSAKICAgICAgICAgICAgICAgZmlsdGVyKG9udF9jdHJ5X25hbWUgPT0gIkdoYW5hIiwKICAgICAgICAgICAgICAgICAgICAgIGl0ZW1fY29kZSAlaW4lIGMoIm11ZyIsICJ0YmwiLCAiZGVtIiwgImdvZCIpKSkKc3VtbWFyeShtLm11Zy5naGFuYSkKCiMgRWN1YWRvciAtLW11Z3MsIHRhYmxlcywgZ29kLCBXZW5lCm0ubXVnLmVjdWFkb3IgPC0gbG1lcihjb25mX2RpciB+IHF1ZXN0aW9uX3R5cGUgKyAoMXxvbnRfc3ViaiksIGRhdGEgPSBkZl9leHRfdXNlbnNfY29uZl9BTFQgJT4lIAogICAgICAgICAgICAgICBmaWx0ZXIob250X2N0cnlfbmFtZSA9PSAiRWN1YWRvciIsCiAgICAgICAgICAgICAgICAgICAgICBpdGVtX2NvZGUgJWluJSBjKCJtdWciLCAidGJsIiwgIndlbiIsICJnb2QiKSkpICNXZW5lIGluc3RlYWQgb2YgZGVtb24Kc3VtbWFyeShtLm11Zy5lY3VhZG9yKQoKIyBQZXJ1IC0tbXVncywgdGFibGVzLCBnb2QsIE9uaSBJYm8gCm0ubXVnLnBlcnUgPC0gbG1lcihjb25mX2RpciB+IHF1ZXN0aW9uX3R5cGUgKyAoMXxvbnRfc3ViaiksIGRhdGEgPSBkZl9leHRfdXNlbnNfY29uZl9BTFQgJT4lIAogICAgICAgICAgICAgICBmaWx0ZXIob250X2N0cnlfbmFtZSA9PSAiUGVydSIsCiAgICAgICAgICAgICAgICAgICAgICBpdGVtX2NvZGUgJWluJSBjKCJ0YXoiLCAidGJsIiwgIm9uaSIsICJnb2QiKSkpCnN1bW1hcnkobS5tdWcucGVydSkKYGBgCgojIEFwcGVuZGl4IEE6IFJlc3BvbnNlcyBieSBvYmplY3QsIHZlcnNpb24sIGFuZCBjb3VudHJ5CgojIyBFeGlzdGVuY2UgCgojIyMgVVMKCmBgYHtyfQojIEp1c3QgdmVyc2lvbiAxIHF1ZXN0aW9ucy0tdGhlcmUgYXJlIDIxIHBhcnRpY2lwYW50cwpleGlzdF9iYXIoY291bnRyeSA9ICJVUyIsIHZlcnNpb24gPSAxLCAKICAgICAgICAgIGNvbHMgPSBjKCJzY2lfZXh0X2dybSIsICJzcG5fZXh0X2RlbSIsICJvcmRfZXh0X211ZyIsICJzY2lfZXh0X2d2dCIsICJmaWNfZXh0X3NtbiIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNjaV9leHRfZ3JtIiA9ICJHZXJtcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fZXh0X2RlbSIgPSAiRGVtb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9leHRfbXVnIiA9ICJDb2ZmZWUgTXVncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfZXh0X2d2dCIgPSAiR3Jhdml0eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfZXh0X3NtbiIgPSAiU3VwZXJtYW4iKSwgCiAgICAgICAgICB0aXRsZSA9ICJVUyBWZXJzaW9uIDEgcmVzcG9uc2VzIHRvIHdoZXRoZXIgb2JqZWN0cyBleGlzdCIsIAogICAgICAgICAgZGF0YSA9IGRmKQoKCiMgVmVyc2lvbiAyIC0tIDI4IHBhcnRpY2lwYW50cwpleGlzdF9iYXIoY291bnRyeSA9ICJVUyIsIHZlcnNpb24gPSAyLCAKICAgICAgICAgIGNvbHMgPSBjKCJzY2lfZXh0X2NuYyIsICJzcG5fZXh0X2dvZCIsICJvcmRfZXh0X3RibCIsICJzcG5fZXh0X2docyIsICJmaWNfZXh0X2hhcCIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNjaV9leHRfY25jIiA9ICJDYW5jZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX2V4dF9nb2QiID0gIkdvZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfZXh0X3RibCIgPSAiVGFibGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9leHRfZ2hzIiA9ICJHaG9zdHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX2V4dF9oYXAiID0gIkhhcnJ5IFBvdHRlciIpLCAKICAgICAgICAgIHRpdGxlID0gIlVTIFZlcnNpb24gMiByZXNwb25zZXMgdG8gd2hldGhlciBvYmplY3RzIGV4aXN0IiwgCiAgICAgICAgICBkYXRhID0gZGYpCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyMgQk9USCBWRVJTSU9OUyBDT01CSU5FRCBCWSBRVUVTVElPTiBUWVBFIAp1c19kYXRhX2NvbWJpbmVkIDwtIGRmICU+JQogIGZpbHRlcihvbnRfY3RyeV9uYW1lID09ICJVUyIpICU+JQogIHNlbGVjdChzY2lfZXh0X2dybSwgc3BuX2V4dF9kZW0sIG9yZF9leHRfbXVnLCBzY2lfZXh0X2d2dCwgZmljX2V4dF9zbW4sCiAgICAgICAgIHNjaV9leHRfY25jLCBzcG5fZXh0X2dvZCwgb3JkX2V4dF90YmwsIHNwbl9leHRfZ2hzLCBmaWNfZXh0X2hhcCkgJT4lCiAgbXV0YXRlKGFjcm9zcyhldmVyeXRoaW5nKCksIGFzLm51bWVyaWMpKSAlPiUKICBwaXZvdF9sb25nZXIoZXZlcnl0aGluZygpLCBuYW1lc190byA9ICJxdWVzdGlvbiIsIHZhbHVlc190byA9ICJyZXNwb25zZSIpICU+JQogIG11dGF0ZSgKICAgIHF1ZXN0aW9uX3R5cGUgPSByZWNvZGUocXVlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9leHRfZ3JtID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lfZXh0X2d2dCA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX2V4dF9jbmMgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZF9leHRfbXVnID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkX2V4dF90YmwgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X2dvZCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X2RlbSA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X2docyA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X2hhcCA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X3NtbiA9ICJGaWN0aW9uYWwiKQogICkgJT4lCiAgZmlsdGVyKCFpcy5uYShyZXNwb25zZSkpICU+JQogIGdyb3VwX2J5KHF1ZXN0aW9uX3R5cGUpICU+JQogIHN1bW1hcmlzZSgKICAgIHllc19jb3VudCA9IHN1bShyZXNwb25zZSA9PSAxKSwKICAgIHRvdGFsX2NvdW50ID0gbigpLAogICAgcHJvcG9ydGlvbl95ZXMgPSB5ZXNfY291bnQgLyB0b3RhbF9jb3VudAogICkgJT4lCiAgYXJyYW5nZShkZXNjKHByb3BvcnRpb25feWVzKSkgICMgT3JkZXIgYnkgcHJvcG9ydGlvbgoKIyBDcmVhdGUgYmFyIHBsb3QKdXNfZGF0YV9jb21iaW5lZCAlPiUKICBnZ3Bsb3QoYWVzKHggPSByZW9yZGVyKHF1ZXN0aW9uX3R5cGUsIC1wcm9wb3J0aW9uX3llcyksIHkgPSBwcm9wb3J0aW9uX3llcywgZmlsbCA9IHF1ZXN0aW9uX3R5cGUpKSArCiAgZ2VvbV9jb2wod2lkdGggPSAwLjgpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50X2Zvcm1hdChhY2N1cmFjeSA9IDEpKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKyAgIyBSZW1vdmVzIHRoZSBsZWdlbmQKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KHByb3BvcnRpb25feWVzLCBhY2N1cmFjeSA9IDEpKSwKICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9zdGFjayh2anVzdCA9IDAuNSksIGNvbG9yID0gIndoaXRlIiwgc2l6ZSA9IDUpICsgICMgQWRkICUgYW5kIG4KICBsYWJzKAogICAgdGl0bGUgPSAiVVMgT250b2xvZ3kgUXVlc3Rpb25zLS1Qcm9wb3J0aW9uIG9mICdZZXMnIFJlc3BvbnNlcyBieSBRdWVzdGlvbiBUeXBlIiwKICAgIHggPSAiUXVlc3Rpb24gVHlwZSIsCiAgICB5ID0gIlByb3BvcnRpb24gb2YgJ1llcycgUmVzcG9uc2VzIgogICkKCmBgYAoKIyMjIEdoYW5hIAoKYGBge3J9CiMgVmVyc2lvbiAxIC0tIDM1IHBhcnRpY2lwYW50cwpleGlzdF9iYXIoY291bnRyeSA9ICJHaGFuYSIsIHZlcnNpb24gPSAxLCAKICAgICAgICAgIGNvbHMgPSBjKCJzY2lfZXh0X2dybSIsICJzcG5fZXh0X2RlbSIsICJvcmRfZXh0X211ZyIsICJzY2lfZXh0X2ZyYyIsICJmaWNfZXh0X3NtbiIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNjaV9leHRfZ3JtIiA9ICJHZXJtcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fZXh0X2RlbSIgPSAiRGVtb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9leHRfbXVnIiA9ICJDb2ZmZWUgTXVncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfZXh0X2ZyYyIgPSAiRm9yY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX2V4dF9zbW4iID0gIlN1cGVybWFuIiksIAogICAgICAgICAgdGl0bGUgPSAiR2hhbmEgVmVyc2lvbiAxIHJlc3BvbnNlcyB0byB3aGV0aGVyIG9iamVjdHMgZXhpc3QiLCAKICAgICAgICAgIGRhdGEgPSBkZikKCiMgVmVyc2lvbiAyIC0tIDM1IHBhcnRpY2lwYW50cwpleGlzdF9iYXIoY291bnRyeSA9ICJHaGFuYSIsIHZlcnNpb24gPSAyLCAKICAgICAgICAgIGNvbHMgPSBjKCJzY2lfZXh0X2NuYyIsICJzcG5fZXh0X2dvZCIsICJvcmRfZXh0X3RibCIsICJzcG5fZXh0X2FicyIsICJmaWNfZXh0X2t3ayIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNjaV9leHRfY25jIiA9ICJDYW5jZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX2V4dF9nb2QiID0gIkdvZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfZXh0X3RibCIgPSAiVGFibGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9leHRfYWJzIiA9ICJBYm9zb20gKHNtYWxsIGdvZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX2V4dF9rd2siID0gIkt3ZWt1IEFuYW5zZSAoZmljLiBjaGFyLikiKSwgCiAgICAgICAgICB0aXRsZSA9ICJHaGFuYSBWZXJzaW9uIDIgcmVzcG9uc2VzIHRvIHdoZXRoZXIgb2JqZWN0cyBleGlzdCIsIAogICAgICAgICAgZGF0YSA9IGRmKQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyMgQk9USCBWRVJTSU9OUyBDT01CSU5FRCBCWSBRVUVTVElPTiBUWVBFIApnaF9kYXRhX2NvbWJpbmVkIDwtIGRmICU+JQogIGZpbHRlcihvbnRfY3RyeV9uYW1lID09ICJHaGFuYSIpICU+JQogIHNlbGVjdChzY2lfZXh0X2dybSwgc3BuX2V4dF9kZW0sIG9yZF9leHRfbXVnLCBzY2lfZXh0X2ZyYywgZmljX2V4dF9zbW4sCiAgICAgICAgIHNjaV9leHRfY25jLCBzcG5fZXh0X2dvZCwgb3JkX2V4dF90YmwsIHNwbl9leHRfYWJzLCBmaWNfZXh0X2t3aykgJT4lCiAgbXV0YXRlKGFjcm9zcyhldmVyeXRoaW5nKCksIGFzLm51bWVyaWMpKSAlPiUKICBwaXZvdF9sb25nZXIoZXZlcnl0aGluZygpLCBuYW1lc190byA9ICJxdWVzdGlvbiIsIHZhbHVlc190byA9ICJyZXNwb25zZSIpICU+JQogIG11dGF0ZSgKICAgIHF1ZXN0aW9uX3R5cGUgPSByZWNvZGUocXVlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9leHRfZ3JtID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lfZXh0X2ZyYyA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX2V4dF9jbmMgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZF9leHRfbXVnID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkX2V4dF90YmwgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X2dvZCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X2RlbSA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X2FicyA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X2t3ayA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X3NtbiA9ICJGaWN0aW9uYWwiKQogICkgJT4lCiAgZmlsdGVyKCFpcy5uYShyZXNwb25zZSkpICU+JQogIGdyb3VwX2J5KHF1ZXN0aW9uX3R5cGUpICU+JQogIHN1bW1hcmlzZSgKICAgIHllc19jb3VudCA9IHN1bShyZXNwb25zZSA9PSAxKSwKICAgIHRvdGFsX2NvdW50ID0gbigpLAogICAgcHJvcG9ydGlvbl95ZXMgPSB5ZXNfY291bnQgLyB0b3RhbF9jb3VudAogICkgJT4lCiAgYXJyYW5nZShkZXNjKHByb3BvcnRpb25feWVzKSkgICMgT3JkZXIgYnkgcHJvcG9ydGlvbgoKIyBDcmVhdGUgYmFyIHBsb3QKZ2hfZGF0YV9jb21iaW5lZCAlPiUKICBnZ3Bsb3QoYWVzKHggPSByZW9yZGVyKHF1ZXN0aW9uX3R5cGUsIC1wcm9wb3J0aW9uX3llcyksIHkgPSBwcm9wb3J0aW9uX3llcywgZmlsbCA9IHF1ZXN0aW9uX3R5cGUpKSArCiAgZ2VvbV9jb2wod2lkdGggPSAwLjgpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50X2Zvcm1hdChhY2N1cmFjeSA9IDEpKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKyAgIyBSZW1vdmVzIHRoZSBsZWdlbmQKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KHByb3BvcnRpb25feWVzLCBhY2N1cmFjeSA9IDEpKSwgICMgQWRkIHRleHQgb24gdGhlIGJhcnMKICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9zdGFjayh2anVzdCA9IDAuNSksIGNvbG9yID0gIndoaXRlIiwgc2l6ZSA9IDUpICsgICMgQWRqdXN0IHRleHQgYXBwZWFyYW5jZQogIGxhYnMoCiAgICB0aXRsZSA9ICJHaGFuYSBPbnRvbG9neSBRdWVzdGlvbnMtLVByb3BvcnRpb24gb2YgJ1llcycgUmVzcG9uc2VzIGJ5IFF1ZXN0aW9uIFR5cGUiLAogICAgeCA9ICJRdWVzdGlvbiBUeXBlIiwKICAgIHkgPSAiUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMiKQpgYGAKCiMjIyBFY3VhZG9yCgpgYGB7cn0KIyBWZXJzaW9uIDEgLS0gMTAgcGFydGljaXBhbnRzIApleGlzdF9iYXIoY291bnRyeSA9ICJFY3VhZG9yIiwgdmVyc2lvbiA9IDEsIAogICAgICAgICAgY29scyA9IGMoInNjaV9leHRfZmx1IiwgInNwbl9leHRfd2VuIiwgIm9yZF9leHRfbXVnIiwgInNjaV9leHRfcGFyIiwgImZpY19leHRfc3BkIiksIAogICAgICAgICAgY29sX25hbWVzID0gYygic2NpX2V4dF9mbHUiID0gIkRhaWNhd28gKGZsdSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX2V4dF93ZW4iID0gIldlbmUgKGRlbW9uL2ZvcmVzdCBnb2QpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9leHRfbXVnIiA9ICJDb2ZmZWUgTXVncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfZXh0X3BhciIgPSAiSW50ZXN0aW5hbCBQYXJhc2l0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX2V4dF9zcGQiID0gIlNwaWRlcm1hbiIpLCAKICAgICAgICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uIFZlcnNpb24gMSByZXNwb25zZXMgdG8gd2hldGhlciBvYmplY3RzIGV4aXN0IiwgCiAgICAgICAgICBkYXRhID0gZGYpCgojIFZlcnNpb24gMiAtLSAxMCBwYXJ0aWNpcGFudHMKZXhpc3RfYmFyKGNvdW50cnkgPSAiRWN1YWRvciIsIHZlcnNpb24gPSAyLCAKICAgICAgICAgIGNvbHMgPSBjKCJzY2lfZXh0X2NuYyIsICJzcG5fZXh0X2dvZCIsICJvcmRfZXh0X3RibCIsICJzcG5fZXh0X29rdyIsICJmaWNfZXh0X3JhbSIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNjaV9leHRfY25jIiA9ICJDYW5jZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX2V4dF9nb2QiID0gIkdvZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfZXh0X3RibCIgPSAiVGFibGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9leHRfb2t3IiA9ICJPbm9rYXdhIChnaG9zdCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX2V4dF9yYW0iID0gIlJhbWJvIiksIAogICAgICAgICAgdGl0bGUgPSAiRWN1YWRvcmlhbiBBbWF6b24gVmVyc2lvbiAyIHJlc3BvbnNlcyB0byB3aGV0aGVyIG9iamVjdHMgZXhpc3QiLCAKICAgICAgICAgIGRhdGEgPSBkZikKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMjIEJPVEggVkVSU0lPTlMgQ09NQklORUQgQlkgUVVFU1RJT04gVFlQRSAKZWNfZGF0YV9jb21iaW5lZCA8LSBkZiAlPiUKICBmaWx0ZXIob250X2N0cnlfbmFtZSA9PSAiRWN1YWRvciIpICU+JQogIHNlbGVjdChzY2lfZXh0X2ZsdSwgc3BuX2V4dF93ZW4sIG9yZF9leHRfbXVnLCBzY2lfZXh0X3BhciwgZmljX2V4dF9zcGQsCiAgICAgICAgIHNjaV9leHRfY25jLCBzcG5fZXh0X2dvZCwgb3JkX2V4dF90YmwsIHNwbl9leHRfb2t3LCBmaWNfZXh0X3JhbSkgJT4lCiAgbXV0YXRlKGFjcm9zcyhldmVyeXRoaW5nKCksIGFzLm51bWVyaWMpKSAlPiUKICBwaXZvdF9sb25nZXIoZXZlcnl0aGluZygpLCBuYW1lc190byA9ICJxdWVzdGlvbiIsIHZhbHVlc190byA9ICJyZXNwb25zZSIpICU+JQogIG11dGF0ZSgKICAgIHF1ZXN0aW9uX3R5cGUgPSByZWNvZGUocXVlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9leHRfZmx1ID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lfZXh0X3BhciA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX2V4dF9jbmMgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZF9leHRfbXVnID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkX2V4dF90YmwgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X2dvZCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X3dlbiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X29rdyA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X3NwZCA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWNfZXh0X3JhbSA9ICJGaWN0aW9uYWwiKQogICkgJT4lCiAgZmlsdGVyKCFpcy5uYShyZXNwb25zZSkpICU+JQogIGdyb3VwX2J5KHF1ZXN0aW9uX3R5cGUpICU+JQogIHN1bW1hcmlzZSgKICAgIHllc19jb3VudCA9IHN1bShyZXNwb25zZSA9PSAxKSwKICAgIHRvdGFsX2NvdW50ID0gbigpLAogICAgcHJvcG9ydGlvbl95ZXMgPSB5ZXNfY291bnQgLyB0b3RhbF9jb3VudAogICkgJT4lCiAgYXJyYW5nZShkZXNjKHByb3BvcnRpb25feWVzKSkgICMgT3JkZXIgYnkgcHJvcG9ydGlvbgoKIyBDcmVhdGUgYmFyIHBsb3QKZWNfZGF0YV9jb21iaW5lZCAlPiUKICBnZ3Bsb3QoYWVzKHggPSByZW9yZGVyKHF1ZXN0aW9uX3R5cGUsIC1wcm9wb3J0aW9uX3llcyksIHkgPSBwcm9wb3J0aW9uX3llcywgZmlsbCA9IHF1ZXN0aW9uX3R5cGUpKSArCiAgZ2VvbV9jb2wod2lkdGggPSAwLjgpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50X2Zvcm1hdChhY2N1cmFjeSA9IDEpKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKyAgIyBSZW1vdmVzIHRoZSBsZWdlbmQKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KHByb3BvcnRpb25feWVzLCBhY2N1cmFjeSA9IDEpKSwgICMgQWRkIHRleHQgb24gdGhlIGJhcnMKICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9zdGFjayh2anVzdCA9IDAuNSksIGNvbG9yID0gIndoaXRlIiwgc2l6ZSA9IDUpICsgICMgQWRqdXN0IHRleHQgYXBwZWFyYW5jZQogIGxhYnMoCiAgICB0aXRsZSA9ICJFY3VhZG9yaWFuIEFtYXpvbiBPbnRvbG9neSBRdWVzdGlvbnMtLVByb3BvcnRpb24gb2YgJ1llcycgUmVzcG9uc2VzIGJ5IFF1ZXN0aW9uIFR5cGUiLAogICAgeCA9ICJRdWVzdGlvbiBUeXBlIiwKICAgIHkgPSAiUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMiKQpgYGAKCiMjIyBQZXJ1CgpgYGB7cn0KIyBWZXJzaW9uIDEgLS0gMjEgcGFydGljaXBhbnRzCmV4aXN0X2Jhcihjb3VudHJ5ID0gIlBlcnUiLCB2ZXJzaW9uID0gMSwgCiAgICAgICAgICBjb2xzID0gYygic3BuX2V4dF95c2giLCAic2NpX2V4dF9wYXIiLCAic3BuX2V4dF9nb2QiLCAib3JkX2V4dF90YmwiLCAiZmljX2V4dF9uanQiLCAic3BuX2V4dF9jaGEiLCAic2NpX2V4dF9jbmMiKSwgCiAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJzcG5fZXh0X3lzaCIgPSAiTWFodWEgWW9zaGluXG4oYmFkIHNwaXJpdCkiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfZXh0X3BhciIgPSAiSW50ZXN0aW5hbCBQYXJhc2l0ZXMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fZXh0X2dvZCIgPSAiR29kIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAib3JkX2V4dF90YmwiID0gIlRhYmxlcyIsICAKICAgICAgICAgICAgICAgICAgICAgICAgImZpY19leHRfbmp0IiA9ICJOaW5qYSBUdXJ0bGVzIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAic3BuX2V4dF9jaGEiID0gIkNoYWlrb25pXG4oaW52aXNpYmxlIG1hZ2ljIGh1bWFucykiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfZXh0X2NuYyIgPSAiQ2FuY2VyIiksIAogICAgICAgICAgdGl0bGUgPSAiUGVydXZpYW4gQW1hem9uIFZlcnNpb24gMSByZXNwb25zZXMgdG8gd2hldGhlciBvYmplY3RzIGV4aXN0IiwgCiAgICAgICAgICBkYXRhID0gZGYpCgoKIyBWZXJzaW9uIDIgLS0gMTkgcGFydGljaXBhbnRzCmV4aXN0X2Jhcihjb3VudHJ5ID0gIlBlcnUiLCB2ZXJzaW9uID0gMiwgCiAgICAgICAgICBjb2xzID0gYygic2NpX2V4dF9ncm0iLCAibmFzX2V4dF9yb24iLCAib3JkX2V4dF90YXoiLCAic3BuX2V4dF9vbmkiLCAiZmljX2V4dF9zbW4iLCAibmFzX2V4dF9kbHAiKSwgCiAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJzY2lfZXh0X2dybSIgPSAiR2VybXMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hc19leHRfcm9uIiA9ICJSb25pblxuKEFuYWNvbmRhKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfZXh0X3RheiIgPSAiQ29mZmVlIE11ZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fZXh0X29uaSIgPSAiT25pIElib1xuKGdvb2Qgc3Bpcml0KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfZXh0X3NtbiIgPSAiU3VwZXJtYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAibmFzX2V4dF9kbHAiID0gIkpvc2hpbiBLb2tvc2hrYVxuKHBpbmsgcml2ZXIgZG9scGhpbikiKSwgCiAgICAgICAgICB0aXRsZSA9ICJQZXJ1dmlhbiBBbWF6b24gVmVyc2lvbiAyIHJlc3BvbnNlcyB0byB3aGV0aGVyIG9iamVjdHMgZXhpc3QiLCAKICAgICAgICAgIGRhdGEgPSBkZikKCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEJPVEggVkVSU0lPTlMgQ09NQklORUQKCnBlcnVfZGF0YV9jb21iaW5lZCA8LSBkZiAlPiUKICBmaWx0ZXIob250X2N0cnlfbmFtZSA9PSAiUGVydSIpICU+JQogIHNlbGVjdChzcG5fZXh0X3lzaCwgc2NpX2V4dF9wYXIsIHNwbl9leHRfZ29kLCBvcmRfZXh0X3RibCwgZmljX2V4dF9uanQsIHNwbl9leHRfY2hhLCBzY2lfZXh0X2NuYywKICAgICAgICAgc2NpX2V4dF9ncm0sIG5hc19leHRfcm9uLCBvcmRfZXh0X3Rheiwgc3BuX2V4dF9vbmksIGZpY19leHRfc21uLCBuYXNfZXh0X2RscCkgJT4lCiAgbXV0YXRlKGFjcm9zcyhldmVyeXRoaW5nKCksIGFzLm51bWVyaWMpKSAlPiUKICBwaXZvdF9sb25nZXIoZXZlcnl0aGluZygpLCBuYW1lc190byA9ICJxdWVzdGlvbiIsIHZhbHVlc190byA9ICJyZXNwb25zZSIpICU+JQogIG11dGF0ZSgKICAgIHF1ZXN0aW9uX3R5cGUgPSByZWNvZGUocXVlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9leHRfcGFyID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lfZXh0X2NuYyA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX2V4dF9ncm0gPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZF9leHRfdGF6ID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkX2V4dF90YmwgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X3lzaCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X2dvZCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X2NoYSA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBuYXNfZXh0X3JvbiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcG5fZXh0X29uaSA9ICJTdXBlcm5hdHVyYWwiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFzX2V4dF9kbHAgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX2V4dF9uanQgPSAiRmljdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZmljX2V4dF9zbW4gPSAiRmljdGlvbmFsIikKICApICU+JQogIGZpbHRlcighaXMubmEocmVzcG9uc2UpKSAlPiUKICBncm91cF9ieShxdWVzdGlvbl90eXBlKSAlPiUKICBzdW1tYXJpc2UoCiAgICB5ZXNfY291bnQgPSBzdW0ocmVzcG9uc2UgPT0gMSksCiAgICB0b3RhbF9jb3VudCA9IG4oKSwKICAgIHByb3BvcnRpb25feWVzID0geWVzX2NvdW50IC8gdG90YWxfY291bnQKICApICU+JQogIGFycmFuZ2UoZGVzYyhwcm9wb3J0aW9uX3llcykpICAjIE9yZGVyIGJ5IHByb3BvcnRpb24KCiMgQ3JlYXRlIGJhciBwbG90CnBlcnVfZGF0YV9jb21iaW5lZCAlPiUKICBnZ3Bsb3QoYWVzKHggPSByZW9yZGVyKHF1ZXN0aW9uX3R5cGUsIC1wcm9wb3J0aW9uX3llcyksIHkgPSBwcm9wb3J0aW9uX3llcywgZmlsbCA9IHF1ZXN0aW9uX3R5cGUpKSArCiAgZ2VvbV9jb2wod2lkdGggPSAwLjgpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50X2Zvcm1hdChhY2N1cmFjeSA9IDEpKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKyAgIyBSZW1vdmVzIHRoZSBsZWdlbmQKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KHByb3BvcnRpb25feWVzLCBhY2N1cmFjeSA9IDEpKSwgICMgQWRkIHRleHQgb24gdGhlIGJhcnMKICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9zdGFjayh2anVzdCA9IDAuNSksIGNvbG9yID0gIndoaXRlIiwgc2l6ZSA9IDUpICsgICMgQWRqdXN0IHRleHQgYXBwZWFyYW5jZQogIGxhYnMoCiAgICB0aXRsZSA9ICJQZXJ1IEFtYXpvbiBPbnRvbG9neSBRdWVzdGlvbnMtLVByb3BvcnRpb24gb2YgJ1llcycgUmVzcG9uc2VzIGJ5IFF1ZXN0aW9uIFR5cGUiLAogICAgeCA9ICJRdWVzdGlvbiBUeXBlIiwKICAgIHkgPSAiUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMiKQpgYGAKCiMjIENvbmZpZGVuY2UgCgojIyMgVVMKCmBgYHtyLCBmaWcuYXNwID0gMC41fQojIFZlcnNpb24gMS0tMjEgcGFydGljaXBhbnRzCmNvbmZfYmFyX2J5X2V4aXN0ZW5jZSgKICBjb3VudHJ5ID0gIlVTIiwKICB2ZXJzaW9uID0gMSwKICBjb25mX2NvbHMgPSBjKAogICAgInNjaV9jb25mLmV4dF9ncm0iLCAic3BuX2NvbmYuZXh0X2RlbSIsICJvcmRfY29uZi5leHRfbXVnIiwgInNjaV9jb25mLmV4dF9ndnQiLCAiZmljX2NvbmYuZXh0X3NtbiIKICApLAogIGV4aXN0X2NvbHMgPSBjKAogICAgInNjaV9leHRfZ3JtIiwgInNwbl9leHRfZGVtIiwgIm9yZF9leHRfbXVnIiwgInNjaV9leHRfZ3Z0IiwgImZpY19leHRfc21uIgogICksCiAgY29sX25hbWVzID0gYygKICAgICJzY2lfY29uZi5leHRfZ3JtIiA9ICJHZXJtcyIsCiAgICAic3BuX2NvbmYuZXh0X2RlbSIgPSAiRGVtb25zIiwKICAgICJvcmRfY29uZi5leHRfbXVnIiA9ICJDb2ZmZWUgTXVncyIsCiAgICAic2NpX2NvbmYuZXh0X2d2dCIgPSAiR3Jhdml0eSIsCiAgICAiZmljX2NvbmYuZXh0X3NtbiIgPSAiU3VwZXJtYW4iCiAgKSwKICB0aXRsZSA9ICJVUyBWMTogQ29uZmlkZW5jZSBieSBCZWxpZWYiCikKCiMgVmVyc2lvbiAyIC0tIDI4IHBhcnRpY2lwYW50cwpjb25mX2Jhcl9ieV9leGlzdGVuY2UoCiAgY291bnRyeSA9ICJVUyIsCiAgdmVyc2lvbiA9IDIsCiAgY29uZl9jb2xzID0gYygKICAgICJzY2lfY29uZi5leHRfY25jIiwgInNwbl9jb25mLmV4dF9nb2QiLCAib3JkX2NvbmYuZXh0X3RibCIsICJzcG5fY29uZi5leHRfZ2hzIiwgImZpY19jb25mLmV4dF9oYXAiCiAgKSwKICBleGlzdF9jb2xzID0gYygKICAgICJzY2lfZXh0X2NuYyIsICJzcG5fZXh0X2dvZCIsICJvcmRfZXh0X3RibCIsICJzcG5fZXh0X2docyIsICJmaWNfZXh0X2hhcCIKICApLAogIGNvbF9uYW1lcyA9IGMoCiAgICAic2NpX2NvbmYuZXh0X2NuYyIgPSAiQ2FuY2VyIiwKICAgICJzcG5fY29uZi5leHRfZ29kIiA9ICJHb2QiLAogICAgIm9yZF9jb25mLmV4dF90YmwiID0gIlRhYmxlcyIsCiAgICAic3BuX2NvbmYuZXh0X2docyIgPSAiR2hvc3RzIiwKICAgICJmaWNfY29uZi5leHRfaGFwIiA9ICJIYXJyeSBQb3R0ZXIiCiAgKSwKICB0aXRsZSA9ICJVUyBWMjogQ29uZmlkZW5jZSBieSBCZWxpZWYiCikKCmBgYAoKIyMjIEdoYW5hIAoKYGBge3IsIGZpZy5hc3AgPSAwLjV9CiMgVmVyc2lvbiAxIC0tIDM1IHBhcnRpY2lwYW50cwpjb25mX2Jhcl9ieV9leGlzdGVuY2UoCiAgY291bnRyeSA9ICJHaGFuYSIsCiAgdmVyc2lvbiA9IDEsCiAgY29uZl9jb2xzID0gYygKICAgICJzY2lfY29uZi5leHRfZ3JtIiwgInNwbl9jb25mLmV4dF9kZW0iLCAib3JkX2NvbmYuZXh0X211ZyIsICJzY2lfY29uZi5leHRfZnJjIiwgImZpY19jb25mLmV4dF9zbW4iCiAgKSwKICBleGlzdF9jb2xzID0gYygKICAgICJzY2lfZXh0X2dybSIsICJzcG5fZXh0X2RlbSIsICJvcmRfZXh0X211ZyIsICJzY2lfZXh0X2ZyYyIsICJmaWNfZXh0X3NtbiIKICApLAogIGNvbF9uYW1lcyA9IGMoCiAgICAic2NpX2NvbmYuZXh0X2dybSIgPSAiR2VybXMiLAogICAgInNwbl9jb25mLmV4dF9kZW0iID0gIkRlbW9ucyIsCiAgICAib3JkX2NvbmYuZXh0X211ZyIgPSAiQ29mZmVlIE11Z3MiLAogICAgInNjaV9jb25mLmV4dF9mcmMiID0gIkZvcmNlIiwKICAgICJmaWNfY29uZi5leHRfc21uIiA9ICJTdXBlcm1hbiIKICApLAogIHRpdGxlID0gIkdoYW5hIFYxOiBDb25maWRlbmNlIGJ5IEJlbGllZiIKKQoKIyBWZXJzaW9uIDIgLS0gMzUgcGFydGljaXBhbnRzCmNvbmZfYmFyX2J5X2V4aXN0ZW5jZSgKICBjb3VudHJ5ID0gIkdoYW5hIiwKICB2ZXJzaW9uID0gMiwKICBjb25mX2NvbHMgPSBjKAogICAgInNjaV9jb25mLmV4dF9jbmMiLCAic3BuX2NvbmYuZXh0X2dvZCIsICJvcmRfY29uZi5leHRfdGJsIiwgInNwbl9jb25mLmV4dF9hYnMiLCAiZmljX2NvbmYuZXh0X2t3ayIKICApLAogIGV4aXN0X2NvbHMgPSBjKAogICAgInNjaV9leHRfY25jIiwgInNwbl9leHRfZ29kIiwgIm9yZF9leHRfdGJsIiwgInNwbl9leHRfYWJzIiwgImZpY19leHRfa3drIgogICksCiAgY29sX25hbWVzID0gYygKICAgICJzY2lfY29uZi5leHRfY25jIiA9ICJDYW5jZXIiLAogICAgInNwbl9jb25mLmV4dF9nb2QiID0gIkdvZCIsCiAgICAib3JkX2NvbmYuZXh0X3RibCIgPSAiVGFibGVzIiwKICAgICJzcG5fY29uZi5leHRfYWJzIiA9ICJBYm9zb21cbihzbWFsbCBnb2QpIiwKICAgICJmaWNfY29uZi5leHRfa3drIiA9ICJLd2VrdSBBbmFuc2VcbihmaWMuIGNoYXIuKSIKICApLAogIHRpdGxlID0gIkdoYW5hIFYyOiBDb25maWRlbmNlIGJ5IEJlbGllZiIKKQoKYGBgCgojIyMgRWN1YWRvcgoKYGBge3IsIGZpZy5hc3AgPSAwLjV9CiMgVjEgMTAgcGFydGljaXBhbnRzIApjb25mX2Jhcl9ieV9leGlzdGVuY2UoCiAgY291bnRyeSA9ICJFY3VhZG9yIiwKICB2ZXJzaW9uID0gMSwKICBjb25mX2NvbHMgPSBjKAogICAgInNjaV9jb25mLmV4dF9mbHUiLCAic3BuX2NvbmYuZXh0X3dlbiIsICJvcmRfY29uZi5leHRfbXVnIiwgInNjaV9jb25mLmV4dF9wYXIiLCAiZmljX2NvbmYuZXh0X3NwZCIKICApLAogIGV4aXN0X2NvbHMgPSBjKAogICAgInNjaV9leHRfZmx1IiwgInNwbl9leHRfd2VuIiwgIm9yZF9leHRfbXVnIiwgInNjaV9leHRfcGFyIiwgImZpY19leHRfc3BkIgogICksCiAgY29sX25hbWVzID0gYygKICAgICJzY2lfY29uZi5leHRfZmx1IiA9ICJEYWljYXdvIChmbHUpIiwKICAgICJzcG5fY29uZi5leHRfd2VuIiA9ICJXZW5lXG4oZGVtb24vZm9yZXN0IGdvZCkiLAogICAgIm9yZF9jb25mLmV4dF9tdWciID0gIkNvZmZlZSBNdWdzIiwKICAgICJzY2lfY29uZi5leHRfcGFyIiA9ICJJbnRlc3RpbmFsIFBhcmFzaXRlcyIsCiAgICAiZmljX2NvbmYuZXh0X3NwZCIgPSAiU3BpZGVybWFuIgogICksCiAgdGl0bGUgPSAiRWN1YWRvcmlhbiBBbWF6b24gVjE6IENvbmZpZGVuY2UgYnkgQmVsaWVmIgopCgojIFYyIDEwIHBhcnRpY2lwYW50cwpjb25mX2Jhcl9ieV9leGlzdGVuY2UoCiAgY291bnRyeSA9ICJFY3VhZG9yIiwKICB2ZXJzaW9uID0gMiwKICBjb25mX2NvbHMgPSBjKAogICAgInNjaV9jb25mLmV4dF9jbmMiLCAic3BuX2NvbmYuZXh0X2dvZCIsICJvcmRfY29uZi5leHRfdGJsIiwgInNwbl9jb25mLmV4dF9va3ciLCAiZmljX2NvbmYuZXh0X3JhbSIKICApLAogIGV4aXN0X2NvbHMgPSBjKAogICAgInNjaV9leHRfY25jIiwgInNwbl9leHRfZ29kIiwgIm9yZF9leHRfdGJsIiwgInNwbl9leHRfb2t3IiwgImZpY19leHRfcmFtIgogICksCiAgY29sX25hbWVzID0gYygKICAgICJzY2lfY29uZi5leHRfY25jIiA9ICJDYW5jZXIiLAogICAgInNwbl9jb25mLmV4dF9nb2QiID0gIkdvZCIsCiAgICAib3JkX2NvbmYuZXh0X3RibCIgPSAiVGFibGVzIiwKICAgICJzcG5fY29uZi5leHRfb2t3IiA9ICJPbm9rYXdhXG4oZ2hvc3QpIiwKICAgICJmaWNfY29uZi5leHRfcmFtIiA9ICJSYW1ibyIKICApLAogIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uIFYyOiBDb25maWRlbmNlIGJ5IEJlbGllZiIKKQoKYGBgCgojIyMgUGVydQoKYGBge3IsIGZpZy5hc3AgPSAwLjV9CiMgVjEgLS0gMjEgcGFydGljaXBhbnRzCmNvbmZfYmFyX2J5X2V4aXN0ZW5jZSgKICBjb3VudHJ5ID0gIlBlcnUiLAogIHZlcnNpb24gPSAxLAogIGNvbmZfY29scyA9IGMoCiAgICAic3BuX2NvbmYuZXh0X3lzaCIsICJzY2lfY29uZi5leHRfcGFyIiwgInNwbl9jb25mLmV4dF9nb2QiLCAib3JkX2NvbmYuZXh0X3RibCIsICJmaWNfY29uZi5leHRfbmp0IiwgCiAgICAic3BuX2NvbmYuZXh0X2NoYSIsICJzY2lfY29uZi5leHRfY25jIgogICksCiAgZXhpc3RfY29scyA9IGMoCiAgICAic3BuX2V4dF95c2giLCAic2NpX2V4dF9wYXIiLCAic3BuX2V4dF9nb2QiLCAib3JkX2V4dF90YmwiLCAiZmljX2V4dF9uanQiLCAic3BuX2V4dF9jaGEiLCAic2NpX2V4dF9jbmMiCiAgKSwKICBjb2xfbmFtZXMgPSBjKAogICAgInNwbl9jb25mLmV4dF95c2giID0gIk1haHVhIFlvc2hpblxuKGJhZCBzcGlyaXQpIiwKICAgICJzY2lfY29uZi5leHRfcGFyIiA9ICJJbnRlc3RpbmFsIFBhcmFzaXRlcyIsCiAgICAic3BuX2NvbmYuZXh0X2dvZCIgPSAiR29kIiwKICAgICJvcmRfY29uZi5leHRfdGJsIiA9ICJUYWJsZXMiLAogICAgImZpY19jb25mLmV4dF9uanQiID0gIk5pbmphIFR1cnRsZXMiLAogICAgInNwbl9jb25mLmV4dF9jaGEiID0gIkNoYWlrb25pXG4oaW52aXNpYmxlIG1hZ2ljIGh1bWFucykiLAogICAgInNjaV9jb25mLmV4dF9jbmMiID0gIkNhbmNlciIKICApLAogIHRpdGxlID0gIlBlcnV2aWFuIEFtYXpvbiBWMTogQ29uZmlkZW5jZSBieSBCZWxpZWYiCikKCgojIFYyIC0tIDE5IHBhcnRpY2lwYW50cwpjb25mX2Jhcl9ieV9leGlzdGVuY2UoCiAgY291bnRyeSA9ICJQZXJ1IiwKICB2ZXJzaW9uID0gMiwKICBjb25mX2NvbHMgPSBjKAogICAgInNjaV9jb25mLmV4dF9ncm0iLCAibmFzX2NvbmYuZXh0X3JvbiIsICJvcmRfY29uZi5leHRfdGF6IiwgInNwbl9jb25mLmV4dF9vbmkiLCAiZmljX2NvbmYuZXh0X3NtbiIsICJuYXNfY29uZi5leHRfZGxwIgogICksCiAgZXhpc3RfY29scyA9IGMoCiAgICAic2NpX2V4dF9ncm0iLCAibmFzX2V4dF9yb24iLCAib3JkX2V4dF90YXoiLCAic3BuX2V4dF9vbmkiLCAiZmljX2V4dF9zbW4iLCAibmFzX2V4dF9kbHAiCiAgKSwKICBjb2xfbmFtZXMgPSBjKAogICAgInNjaV9jb25mLmV4dF9ncm0iID0gIkdlcm1zIiwKICAgICJuYXNfY29uZi5leHRfcm9uIiA9ICJSb25pblxuKEFuYWNvbmRhKSIsCiAgICAib3JkX2NvbmYuZXh0X3RheiIgPSAiQ29mZmVlIE11ZyIsCiAgICAic3BuX2NvbmYuZXh0X29uaSIgPSAiT25pIElib1xuKGdvb2Qgc3Bpcml0KSIsCiAgICAiZmljX2NvbmYuZXh0X3NtbiIgPSAiU3VwZXJtYW4iLAogICAgIm5hc19jb25mLmV4dF9kbHAiID0gIkpvc2hpbiBLb2tvc2hrYVxuKHBpbmsgcml2ZXIgZG9scGhpbikiCiAgKSwKICB0aXRsZSA9ICJQZXJ1dmlhbiBBbWF6b24gVjI6IENvbmZpZGVuY2UgYnkgQmVsaWVmIgopCgpgYGAKCiMjIENvbW11bmljYXRpb24gCgojIyMgVVMKCmBgYHtyfQp5bl9zdGFja2VkX2Jhcihjb3VudHJ5ID0gIlVTIiwgdmVyc2lvbiA9IDEsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzY2lfY29tdV9ncm0iLCAic3BuX2NvbXVfZGVtIiwgIm9yZF9jb211X211ZyIsICJzY2lfY29tdV9ndnQiLCAiZmljX2NvbXVfc21uIiksIAogICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNjaV9jb211X2dybSIgPSAiR2VybXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX2NvbXVfZGVtIiA9ICJEZW1vbnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAib3JkX2NvbXVfbXVnIiA9ICJDb2ZmZWUgTXVncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfY29tdV9ndnQiID0gIkdyYXZpdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX2NvbXVfc21uIiA9ICJTdXBlcm1hbiIpLCAKICAgICAgICAgICAgICAgICB0aXRsZSA9ICJVUyBWMTogQ2FuIHBlb3BsZSBjb21tdW5pY2F0ZSB3aXRoIF9fPyIpCgojIFZlcnNpb24gMiAtLSAyOCBwYXJ0aWNpcGFudHMKeW5fc3RhY2tlZF9iYXIoY291bnRyeSA9ICJVUyIsIHZlcnNpb24gPSAyLCAKICAgICAgICAgICAgICAgICBjb2xzID0gYygic2NpX2NvbXVfY25jIiwgInNwbl9jb211X2dvZCIsICJvcmRfY29tdV90YmwiLCAic3BuX2NvbXVfZ2hzIiwgImZpY19jb211X2hhcCIpLCAKICAgICAgICAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJzY2lfY29tdV9jbmMiID0gIkNhbmNlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fY29tdV9nb2QiID0gIkdvZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9jb211X3RibCIgPSAiVGFibGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X2docyIgPSAiR2hvc3RzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X2hhcCIgPSAiSGFycnkgUG90dGVyIiksIAogICAgICAgICAgICAgICAgIHRpdGxlID0gIlVTIFYyOiBDYW4gcGVvcGxlIGNvbW11bmljYXRlIHdpdGggX18/IikKCiMgQm90aCB2ZXJzaW9ucyB0b2dldGhlcgp5bl9ieV9jYXRlZ29yeShjb3VudHJ5ID0gIlVTIiwgCiAgICAgICAgICAgICAgICAgY29scyA9IGMoInNjaV9jb211X2dybSIsICJzcG5fY29tdV9kZW0iLCAib3JkX2NvbXVfbXVnIiwgInNjaV9jb211X2d2dCIsICJmaWNfY29tdV9zbW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfY29tdV9jbmMiLCAic3BuX2NvbXVfZ29kIiwgIm9yZF9jb211X3RibCIsICJzcG5fY29tdV9naHMiLCAiZmljX2NvbXVfaGFwIiksCiAgICAgICAgICAgICAgICAgY2F0ZWdvcnlfbWFwcGluZyA9IGMoInNjaV9jb211X2dybSIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fY29tdV9kZW0iID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfY29tdV9tdWciID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9jb211X2d2dCIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfY29tdV9zbW4iID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfY29tdV9jbmMiID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX2NvbXVfZ29kIiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAib3JkX2NvbXVfdGJsIiA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fY29tdV9naHMiID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfY29tdV9oYXAiID0gIkZpY3Rpb25hbCIpLAogICAgICAgICAgICAgICAgIHRpdGxlID0gIlVTOiBDYW4gcGVvcGxlIGNvbW11bmljYXRlIHdpdGggX18/IgogICAgICAgICAgICAgICAgICkKYGBgCgojIyMgR2hhbmEgCgpgYGB7cn0KIyBWZXJzaW9uIDEgLS0gMzUgcGFydGljaXBhbnRzIGJ5IGl0ZW0gYW5kIHZlcnNpb24KeW5fc3RhY2tlZF9iYXIoY291bnRyeSA9ICJHaGFuYSIsIHZlcnNpb24gPSAxLCAKICAgICAgICAgICAgICAgICBjb2xzID0gYygic2NpX2NvbXVfZ3JtIiwgInNwbl9jb211X2RlbSIsICJvcmRfY29tdV9tdWciLCAic2NpX2NvbXVfZnJjIiwgImZpY19jb211X3NtbiIpLCAKICAgICAgICAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJzY2lfY29tdV9ncm0iID0gIkdlcm1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X2RlbSIgPSAiRGVtb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9jb211X211ZyIgPSAiQ29mZmVlIE11Z3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX2NvbXVfZnJjIiA9ICJGb3JjZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfY29tdV9zbW4iID0gIlN1cGVybWFuIiksIAogICAgICAgICAgICAgICAgIHRpdGxlID0gIkdoYW5hIFYxOiBDYW4gcGVvcGxlIGNvbW11bmljYXRlIHdpdGggX18/IikKCiMgVmVyc2lvbiAyIC0tIDM1IHBhcnRpY2lwYW50cyBieSBpdGVtIGFuZCB2ZXJzaW9uCnluX3N0YWNrZWRfYmFyKGNvdW50cnkgPSAiR2hhbmEiLCB2ZXJzaW9uID0gMiwgCiAgICAgICAgICAgICAgICAgY29scyA9IGMoInNjaV9jb211X2NuYyIsICJzcG5fY29tdV9nb2QiLCAib3JkX2NvbXVfdGJsIiwgInNwbl9jb211X2FicyIsICJmaWNfY29tdV9rd2siKSwgCiAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gYygic2NpX2NvbXVfY25jIiA9ICJDYW5jZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX2NvbXVfZ29kIiA9ICJHb2QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAib3JkX2NvbXVfdGJsIiA9ICJUYWJsZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX2NvbXVfYWJzIiA9ICJBYm9zb21cbihzbWFsbCBnb2QpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X2t3ayIgPSAiS3dla3UgQW5hbnNlXG4oZmljLiBjaGFyLikiKSwgCiAgICAgICAgICAgICAgICAgdGl0bGUgPSAiR2hhbmEgVjI6IENhbiBwZW9wbGUgY29tbXVuaWNhdGUgd2l0aCBfXz8iKQoKIyBCb3RoIHZlcnNpb25zIHRvZ2V0aGVyCnluX2J5X2NhdGVnb3J5KGNvdW50cnkgPSAiR2hhbmEiLCAKICAgICAgICAgICAgICAgICBjb2xzID0gYygic2NpX2NvbXVfZ3JtIiwgInNwbl9jb211X2RlbSIsICJvcmRfY29tdV9tdWciLCAic2NpX2NvbXVfZnJjIiwgImZpY19jb211X3NtbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9jb211X2NuYyIsICJzcG5fY29tdV9nb2QiLCAib3JkX2NvbXVfdGJsIiwgInNwbl9jb211X2FicyIsICJmaWNfY29tdV9rd2siKSwKICAgICAgICAgICAgICAgICBjYXRlZ29yeV9tYXBwaW5nID0gYygic2NpX2NvbXVfZ3JtIiA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X2RlbSIgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9jb211X211ZyIgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX2NvbXVfZnJjIiA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X3NtbiIgPSAiRmljdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9jb211X2NuYyIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fY29tdV9nb2QiID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfY29tdV90YmwiID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X2FicyIgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X2t3ayIgPSAiRmljdGlvbmFsIiksCiAgICAgICAgICAgICAgICAgdGl0bGUgPSAiR2hhbmE6IENhbiBwZW9wbGUgY29tbXVuaWNhdGUgd2l0aCBfXz8iCiAgICAgICAgICAgICAgICAgKQpgYGAKCiMjIyBFY3VhZG9yCgpgYGB7cn0KIyBWZXJzaW9uIDEgLS0gMTAgcGFydGljaXBhbnRzIAp5bl9zdGFja2VkX2Jhcihjb3VudHJ5ID0gIkVjdWFkb3IiLCB2ZXJzaW9uID0gMSwgCiAgICAgICAgICAgICAgICAgY29scyA9IGMoInNjaV9jb211X2ZsdSIsICJzcG5fY29tdV93ZW4iLCAib3JkX2NvbXVfbXVnIiwgInNjaV9jb211X3BhciIsICJmaWNfY29tdV9zcGQiKSwgCiAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gYygic2NpX2NvbXVfZmx1IiA9ICJEYWljYXdvIChmbHUpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X3dlbiIgPSAiV2VuZVxuKGRlbW9uL2ZvcmVzdCBnb2QpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9jb211X211ZyIgPSAiQ29mZmVlIE11Z3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX2NvbXVfcGFyIiA9ICJJbnRlc3RpbmFsIFBhcmFzaXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfY29tdV9zcGQiID0gIlNwaWRlcm1hbiIpLCAKICAgICAgICAgICAgICAgICB0aXRsZSA9ICJFY3VhZG9yaWFuIEFtYXpvbiBWMTogQ2FuIHBlb3BsZSBjb21tdW5pY2F0ZSB3aXRoIF9fPyIpCgojIFZlcnNpb24gMiAtLSAxMCBwYXJ0aWNpcGFudHMKeW5fc3RhY2tlZF9iYXIoY291bnRyeSA9ICJFY3VhZG9yIiwgdmVyc2lvbiA9IDIsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzY2lfY29tdV9jbmMiLCAic3BuX2NvbXVfZ29kIiwgIm9yZF9jb211X3RibCIsICJzcG5fY29tdV9va3ciLCAiZmljX2NvbXVfcmFtIiksIAogICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNjaV9jb211X2NuYyIgPSAiQ2FuY2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X2dvZCIgPSAiR29kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9jb211X3RibCIgPSAiVGFibGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X29rdyIgPSAiT25va2F3YVxuKGdob3N0KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfY29tdV9yYW0iID0gIlJhbWJvIiksIAogICAgICAgICAgICAgICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uIFYyOiBDYW4gcGVvcGxlIGNvbW11bmljYXRlIHdpdGggX18/IikKCiMgQm90aCB2ZXJzaW9ucyB0b2dldGhlcgp5bl9ieV9jYXRlZ29yeShjb3VudHJ5ID0gIkVjdWFkb3IiLCAKICAgICAgICAgICAgICAgICBjb2xzID0gYygic2NpX2NvbXVfZmx1IiwgInNwbl9jb211X3dlbiIsICJvcmRfY29tdV9tdWciLCAic2NpX2NvbXVfcGFyIiwgImZpY19jb211X3NwZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9jb211X2NuYyIsICJzcG5fY29tdV9nb2QiLCAib3JkX2NvbXVfdGJsIiwgInNwbl9jb211X29rdyIsICJmaWNfY29tdV9yYW0iKSwKICAgICAgICAgICAgICAgICBjYXRlZ29yeV9tYXBwaW5nID0gYygic2NpX2NvbXVfZmx1IiA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X3dlbiIgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9jb211X211ZyIgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX2NvbXVfcGFyIiA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X3NwZCIgPSAiRmljdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9jb211X2NuYyIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fY29tdV9nb2QiID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfY29tdV90YmwiID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X29rdyIgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X3JhbSIgPSAiRmljdGlvbmFsIiksCiAgICAgICAgICAgICAgICAgdGl0bGUgPSAiRWN1YWRvcmlhbiBBbWF6b246IENhbiBwZW9wbGUgY29tbXVuaWNhdGUgd2l0aCBfXz8iCiAgICAgICAgICAgICAgICAgKQpgYGAKCiMjIyBQZXJ1CgpgYGB7cn0KIyBWZXJzaW9uIDEgLS0gMjEgcGFydGljaXBhbnRzCnluX3N0YWNrZWRfYmFyKGNvdW50cnkgPSAiUGVydSIsIHZlcnNpb24gPSAxLCAKICAgICAgICAgICAgICAgICBjb2xzID0gYygic3BuX2NvbXVfeXNoIiwgInNjaV9jb211X3BhciIsICJzcG5fY29tdV9nb2QiLCAib3JkX2NvbXVfdGJsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X25qdCIsICJzcG5fY29tdV9jaGEiLCAic2NpX2NvbXVfY25jIiksIAogICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNwbl9jb211X3lzaCIgPSAiTWFodWEgWW9zaGluXG4oYmFkIHNwaXJpdCkiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfY29tdV9wYXIiID0gIkludGVzdGluYWwgUGFyYXNpdGVzIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAic3BuX2NvbXVfZ29kIiA9ICJHb2QiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfY29tdV90YmwiID0gIlRhYmxlcyIsICAKICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X25qdCIgPSAiTmluamEgVHVydGxlcyIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X2NoYSIgPSAiQ2hhaWtvbmlcbihpbnZpc2libGUgbWFnaWMgaHVtYW5zKSIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9jb211X2NuYyIgPSAiQ2FuY2VyIiksIAogICAgICAgICAgICAgICAgIHRpdGxlID0gIlBlcnV2aWFuIEFtYXpvbiBWMTogQ2FuIHBlb3BsZSBjb21tdW5pY2F0ZSB3aXRoIF9fPyIpCgojIFZlcnNpb24gMiAtLSAxOSBwYXJ0aWNpcGFudHMKeW5fc3RhY2tlZF9iYXIoY291bnRyeSA9ICJQZXJ1IiwgdmVyc2lvbiA9IDIsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzY2lfY29tdV9ncm0iLCAibmFzX2NvbXVfcm9uIiwgIm9yZF9jb211X3RheiIsICJzcG5fY29tdV9vbmkiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX2NvbXVfc21uIiwgIm5hc19jb211X2RscCIpLCAKICAgICAgICAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJzY2lfY29tdV9ncm0iID0gIkdlcm1zIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYXNfY29tdV9yb24iID0gIlJvbmluXG4oQW5hY29uZGEpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9jb211X3RheiIgPSAiQ29mZmVlIE11ZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fY29tdV9vbmkiID0gIk9uaSBJYm9cbihnb29kIHNwaXJpdCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX2NvbXVfc21uIiA9ICJTdXBlcm1hbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYXNfY29tdV9kbHAiID0gIkpvc2hpbiBLb2tvc2hrYVxuKHBpbmsgcml2ZXIgZG9scGhpbikiKSwgCiAgICAgICAgICAgICAgICAgdGl0bGUgPSAiUGVydXZpYW4gQW1hem9uIFYyOiBDYW4gcGVvcGxlIGNvbW11bmljYXRlIHdpdGggX18/IikKCiMgQm90aCB2ZXJzaW9ucyB0b2dldGhlcgp5bl9ieV9jYXRlZ29yeShjb3VudHJ5ID0gIlBlcnUiLCAKICAgICAgICAgICAgICAgICBjb2xzID0gYygic3BuX2NvbXVfeXNoIiwgInNjaV9jb211X3BhciIsICJzcG5fY29tdV9nb2QiLCAib3JkX2NvbXVfdGJsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X25qdCIsICJzcG5fY29tdV9jaGEiLCAic2NpX2NvbXVfY25jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX2NvbXVfZ3JtIiwgIm5hc19jb211X3JvbiIsICJvcmRfY29tdV90YXoiLCAic3BuX2NvbXVfb25pIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19jb211X3NtbiIsICJuYXNfY29tdV9kbHAiKSwKICAgICAgICAgICAgICAgICBjYXRlZ29yeV9tYXBwaW5nID0gYygic3BuX2NvbXVfeXNoIiA9ICJTdXBlcm5hdHVyYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfY29tdV9wYXIiID0gIlNjaWVudGlmaWMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fY29tdV9nb2QiID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9jb211X3RibCIgPSAiT3JkaW5hcnkiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfY29tdV9uanQiID0gIkZpY3Rpb25hbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9jb211X2NoYSIgPSAiU3VwZXJuYXR1cmFsIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAic2NpX2NvbXVfY25jIiA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9jb211X2dybSIgPSAiU2NpZW50aWZpYyIsIAogICAgICAgICAgICAgICAgICAgICAgICAibmFzX2NvbXVfcm9uIiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAib3JkX2NvbXVfdGF6IiA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fY29tdV9vbmkiID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfY29tdV9zbW4iID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJuYXNfY29tdV9kbHAiID0gIlN1cGVybmF0dXJhbCIpLAogICAgICAgICAgICAgICAgIHRpdGxlID0gIlBlcnV2aWFuIEFtYXpvbjogQ2FuIHBlb3BsZSBjb21tdW5pY2F0ZSB3aXRoIF9fPyIKICAgICAgICAgICAgICAgICApCmBgYAoKIyMgU3BlY2lhbCBQZW9wbGUgCgojIyMgVVMKCmBgYHtyfQpzcGV4cF9zdGFja2VkX2Jhcihjb3VudHJ5ID0gIlVTIiwgdmVyc2lvbiA9IDEsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzY2lfc3BleHBfZ3JtIiwgInNwbl9zcGV4cF9kZW0iLCAib3JkX3NwZXhwX211ZyIsICJzY2lfc3BleHBfZ3Z0IiwgImZpY19zcGV4cF9zbW4iKSwgCiAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gYygic2NpX3NwZXhwX2dybSIgPSAiR2VybXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX3NwZXhwX2RlbSIgPSAiRGVtb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9zcGV4cF9tdWciID0gIkNvZmZlZSBNdWdzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9zcGV4cF9ndnQiID0gIkdyYXZpdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX3NwZXhwX3NtbiIgPSAiU3VwZXJtYW4iKSwgCiAgICAgICAgICAgICAgICAgdGl0bGUgPSAiVVMgVjE6IENhbiBfXyBiZSBleHBlcmllbmNlZCBieSBhbnlvbmUgb3Igb25seSBieSBzcGVjaWZpYyBwZW9wbGU/IikKCiMgVmVyc2lvbiAyIC0tIDI4IHBhcnRpY2lwYW50cwpzcGV4cF9zdGFja2VkX2Jhcihjb3VudHJ5ID0gIlVTIiwgdmVyc2lvbiA9IDIsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzY2lfc3BleHBfY25jIiwgInNwbl9zcGV4cF9nb2QiLCAib3JkX3NwZXhwX3RibCIsICJzcG5fc3BleHBfZ2hzIiwgImZpY19zcGV4cF9oYXAiKSwgCiAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gYygic2NpX3NwZXhwX2NuYyIgPSAiQ2FuY2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9zcGV4cF9nb2QiID0gIkdvZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9zcGV4cF90YmwiID0gIlRhYmxlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fc3BleHBfZ2hzIiA9ICJHaG9zdHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX3NwZXhwX2hhcCIgPSAiSGFycnkgUG90dGVyIiksIAogICAgICAgICAgICAgICAgIHRpdGxlID0gIlVTIFYyOiBDYW4gX18gYmUgZXhwZXJpZW5jZWQgYnkgYW55b25lIG9yIG9ubHkgYnkgc3BlY2lmaWMgcGVvcGxlPyIpCgojIEJvdGggdmVyc2lvbnMgdG9nZXRoZXIKc3BleHBfYnlfY2F0ZWdvcnkoY291bnRyeSA9ICJVUyIsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzY2lfc3BleHBfZ3JtIiwgInNwbl9zcGV4cF9kZW0iLCAib3JkX3NwZXhwX211ZyIsICJzY2lfc3BleHBfZ3Z0IiwgImZpY19zcGV4cF9zbW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfc3BleHBfY25jIiwgInNwbl9zcGV4cF9nb2QiLCAib3JkX3NwZXhwX3RibCIsICJzcG5fc3BleHBfZ2hzIiwgImZpY19zcGV4cF9oYXAiKSwKICAgICAgICAgICAgICAgICBjYXRlZ29yeV9tYXBwaW5nID0gYygic2NpX3NwZXhwX2dybSIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fc3BleHBfZGVtIiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAib3JkX3NwZXhwX211ZyIgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX3NwZXhwX2d2dCIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfc3BleHBfc21uIiA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX3NwZXhwX2NuYyIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fc3BleHBfZ29kIiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAib3JkX3NwZXhwX3RibCIgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX3NwZXhwX2docyIgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19zcGV4cF9oYXAiID0gIkZpY3Rpb25hbCIpLAogICAgICAgICAgICAgICAgIHRpdGxlID0gIlVTOiBDYW4gX18gYmUgZXhwZXJpZW5jZWQgYnkgYW55b25lIG9yIG9ubHkgYnkgc3BlY2lmaWMgcGVvcGxlPyIKICAgICAgICAgICAgICAgICApCmBgYAoKIyMjIEdoYW5hIAoKVGhpcyBxdWVzdGlvbiB3YXMgbm90IGFza2VkIGluIEdoYW5hCgojIyMgRWN1YWRvcgoKYGBge3J9CiMgVmVyc2lvbiAxIC0tIDEwIHBhcnRpY2lwYW50cyAKc3BleHBfc3RhY2tlZF9iYXIoY291bnRyeSA9ICJFY3VhZG9yIiwgdmVyc2lvbiA9IDEsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzY2lfc3BleHBfZmx1IiwgInNwbl9zcGV4cF93ZW4iLCAib3JkX3NwZXhwX211ZyIsICJzY2lfc3BleHBfcGFyIiwgImZpY19zcGV4cF9zcGQiKSwgCiAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gYygic2NpX3NwZXhwX2ZsdSIgPSAiRGFpY2F3byAoZmx1KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fc3BleHBfd2VuIiA9ICJXZW5lXG4oZGVtb24vZm9yZXN0IGdvZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAib3JkX3NwZXhwX211ZyIgPSAiQ29mZmVlIE11Z3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX3NwZXhwX3BhciIgPSAiSW50ZXN0aW5hbCBQYXJhc2l0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX3NwZXhwX3NwZCIgPSAiU3BpZGVybWFuIiksIAogICAgICAgICAgICAgICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uIFYxOiBDYW4gX18gYmUgZXhwZXJpZW5jZWQgYnkgYW55b25lIG9yIG9ubHkgYnkgc3BlY2lmaWMgcGVvcGxlPyIpCgojIFZlcnNpb24gMiAtLSAxMCBwYXJ0aWNpcGFudHMKc3BleHBfc3RhY2tlZF9iYXIoY291bnRyeSA9ICJFY3VhZG9yIiwgdmVyc2lvbiA9IDIsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzY2lfc3BleHBfY25jIiwgInNwbl9zcGV4cF9nb2QiLCAib3JkX3NwZXhwX3RibCIsICJzcG5fc3BleHBfb2t3IiwgImZpY19zcGV4cF9yYW0iKSwgCiAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gYygic2NpX3NwZXhwX2NuYyIgPSAiQ2FuY2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9zcGV4cF9nb2QiID0gIkdvZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfc3BleHBfdGJsIiA9ICJUYWJsZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX3NwZXhwX29rdyIgPSAiT25va2F3YVxuKGdob3N0KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfc3BleHBfcmFtIiA9ICJSYW1ibyIpLCAKICAgICAgICAgICAgICAgICB0aXRsZSA9ICJFY3VhZG9yaWFuIEFtYXpvbiBWMjogQ2FuIF9fIGJlIGV4cGVyaWVuY2VkIGJ5IGFueW9uZSBvciBvbmx5IGJ5IHNwZWNpZmljIHBlb3BsZT8iKQoKIyBCb3RoIHZlcnNpb25zIHRvZ2V0aGVyCnNwZXhwX2J5X2NhdGVnb3J5KGNvdW50cnkgPSAiRWN1YWRvciIsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzY2lfc3BleHBfZmx1IiwgInNwbl9zcGV4cF93ZW4iLCAib3JkX3NwZXhwX211ZyIsICJzY2lfc3BleHBfcGFyIiwgImZpY19zcGV4cF9zcGQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lfc3BleHBfY25jIiwgInNwbl9zcGV4cF9nb2QiLCAib3JkX3NwZXhwX3RibCIsICJzcG5fc3BleHBfb2t3IiwgImZpY19zcGV4cF9yYW0iKSwKICAgICAgICAgICAgICAgICBjYXRlZ29yeV9tYXBwaW5nID0gYygic2NpX3NwZXhwX2ZsdSIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fc3BleHBfd2VuIiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAib3JkX3NwZXhwX211ZyIgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX3NwZXhwX3BhciIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfc3BleHBfc3BkIiA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpX3NwZXhwX2NuYyIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fc3BleHBfZ29kIiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAib3JkX3NwZXhwX3RibCIgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic3BuX3NwZXhwX29rdyIgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19zcGV4cF9yYW0iID0gIkZpY3Rpb25hbCIpLAogICAgICAgICAgICAgICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uOiBDYW4gX18gYmUgZXhwZXJpZW5jZWQgYnkgYW55b25lIG9yIG9ubHkgYnkgc3BlY2lmaWMgcGVvcGxlPyIKICAgICAgICAgICAgICAgICApCmBgYAoKIyMjIFBlcnUKCmBgYHtyfQojIFZlcnNpb24gMSAtLSAyMSBwYXJ0aWNpcGFudHMKc3BleHBfc3RhY2tlZF9iYXIoY291bnRyeSA9ICJQZXJ1IiwgdmVyc2lvbiA9IDEsIAogICAgICAgICAgICAgICAgIGNvbHMgPSBjKCJzcG5fc3BleHBfeXNoIiwgInNjaV9zcGV4cF9wYXIiLCAic3BuX3NwZXhwX2dvZCIsICJvcmRfc3BleHBfdGJsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZpY19zcGV4cF9uanQiLCAic3BuX3NwZXhwX2NoYSIsICJzY2lfc3BleHBfY25jIiksIAogICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNwbl9zcGV4cF95c2giID0gIk1haHVhIFlvc2hpblxuKGJhZCBzcGlyaXQpIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAic2NpX3NwZXhwX3BhciIgPSAiSW50ZXN0aW5hbCBQYXJhc2l0ZXMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fc3BleHBfZ29kIiA9ICJHb2QiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfc3BleHBfdGJsIiA9ICJUYWJsZXMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfc3BleHBfbmp0IiA9ICJOaW5qYSBUdXJ0bGVzIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAic3BuX3NwZXhwX2NoYSIgPSAiQ2hhaWtvbmlcbihpbnZpc2libGUgbWFnaWMgaHVtYW5zKSIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9zcGV4cF9jbmMiID0gIkNhbmNlciIpLCAKICAgICAgICAgICAgICAgICB0aXRsZSA9ICJQZXJ1dmlhbiBBbWF6b24gVjE6IENhbiBfXyBiZSBleHBlcmllbmNlZCBieSBhbnlvbmUgb3Igb25seSBieSBzcGVjaWZpYyBwZW9wbGU/IikKCiMgVmVyc2lvbiAyIC0tIDE5IHBhcnRpY2lwYW50cwpzcGV4cF9zdGFja2VkX2Jhcihjb3VudHJ5ID0gIlBlcnUiLCB2ZXJzaW9uID0gMiwgCiAgICAgICAgICAgICAgICAgY29scyA9IGMoInNjaV9zcGV4cF9ncm0iLCAibmFzX3NwZXhwX3JvbiIsICJvcmRfc3BleHBfdGF6IiwgInNwbl9zcGV4cF9vbmkiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX3NwZXhwX3NtbiIsICJuYXNfc3BleHBfZGxwIiksIAogICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNjaV9zcGV4cF9ncm0iID0gIkdlcm1zIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYXNfc3BleHBfcm9uIiA9ICJSb25pblxuKEFuYWNvbmRhKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfc3BleHBfdGF6IiA9ICJDb2ZmZWUgTXVnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9zcGV4cF9vbmkiID0gIk9uaSBJYm9cbihnb29kIHNwaXJpdCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX3NwZXhwX3NtbiIgPSAiU3VwZXJtYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAibmFzX3NwZXhwX2RscCIgPSAiSm9zaGluIEtva29zaGthXG4ocGluayByaXZlciBkb2xwaGluKSIpLCAKICAgICAgICAgICAgICAgICB0aXRsZSA9ICJQZXJ1dmlhbiBBbWF6b24gVjI6IENhbiBfXyBiZSBleHBlcmllbmNlZCBieSBhbnlvbmUgb3Igb25seSBieSBzcGVjaWZpYyBwZW9wbGU/IikKCiMgQm90aCB2ZXJzaW9ucyB0b2dldGhlcgpzcGV4cF9ieV9jYXRlZ29yeShjb3VudHJ5ID0gIlBlcnUiLCAKICAgICAgICAgICAgICAgICBjb2xzID0gYygic3BuX3NwZXhwX3lzaCIsICJzY2lfc3BleHBfcGFyIiwgInNwbl9zcGV4cF9nb2QiLCAib3JkX3NwZXhwX3RibCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfc3BleHBfbmp0IiwgInNwbl9zcGV4cF9jaGEiLCAic2NpX3NwZXhwX2NuYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9zcGV4cF9ncm0iLCAibmFzX3NwZXhwX3JvbiIsICJvcmRfc3BleHBfdGF6IiwgInNwbl9zcGV4cF9vbmkiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAiZmljX3NwZXhwX3NtbiIsICJuYXNfc3BleHBfZGxwIiksCiAgICAgICAgICAgICAgICAgY2F0ZWdvcnlfbWFwcGluZyA9IGMoInNwbl9zcGV4cF95c2giID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9zcGV4cF9wYXIiID0gIlNjaWVudGlmaWMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJzcG5fc3BleHBfZ29kIiA9ICJTdXBlcm5hdHVyYWwiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJvcmRfc3BleHBfdGJsIiA9ICJPcmRpbmFyeSIsICAKICAgICAgICAgICAgICAgICAgICAgICAgImZpY19zcGV4cF9uanQiID0gIkZpY3Rpb25hbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9zcGV4cF9jaGEiID0gIlN1cGVybmF0dXJhbCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInNjaV9zcGV4cF9jbmMiID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAic2NpX3NwZXhwX2dybSIgPSAiU2NpZW50aWZpYyIsIAogICAgICAgICAgICAgICAgICAgICAgICAibmFzX3NwZXhwX3JvbiIgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgIm9yZF9zcGV4cF90YXoiID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInNwbl9zcGV4cF9vbmkiID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJmaWNfc3BleHBfc21uIiA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAibmFzX3NwZXhwX2RscCIgPSAiU3VwZXJuYXR1cmFsIiksCiAgICAgICAgICAgICAgICAgdGl0bGUgPSAiUGVydXZpYW4gQW1hem9uOiBDYW4gX18gYmUgZXhwZXJpZW5jZWQgYnkgYW55b25lIG9yIG9ubHkgYnkgc3BlY2lmaWMgcGVvcGxlPyIKICAgICAgICAgICAgICAgICApCmBgYAoKIyMgQ2FuIFggYmUgc2Vuc2VkPwoKIyMjIFVTCgpgYGB7cn0KIyBKdXN0IHZlcnNpb24gMSBxdWVzdGlvbnMtLXRoZXJlIGFyZSAyMSBwYXJ0aWNpcGFudHMKZXhpc3RfYmFyKGNvdW50cnkgPSAiVVMiLCB2ZXJzaW9uID0gMSwgCiAgICAgICAgICBjb2xzID0gYygic2Vuc19ncm0iLCAic2Vuc19kZW0iLCAic2Vuc19tdWciLCAic2Vuc19ndnQiLCAic2Vuc19zbW4iKSwgCiAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJzZW5zX2dybSIgPSAiR2VybXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19kZW0iID0gIkRlbW9ucyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX211ZyIgPSAiQ29mZmVlIE11Z3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19ndnQiID0gIkdyYXZpdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19zbW4iID0gIlN1cGVybWFuIiksIAogICAgICAgICAgdGl0bGUgPSAiVVMgVmVyc2lvbiAxLS1DYW4gX18gYmUgc2Vuc2VkPyIsIAogICAgICAgICAgZGF0YSA9IGRmX3NlbnMpCgoKIyBWZXJzaW9uIDIgLS0gMjggcGFydGljaXBhbnRzCmV4aXN0X2Jhcihjb3VudHJ5ID0gIlVTIiwgdmVyc2lvbiA9IDIsIAogICAgICAgICAgY29scyA9IGMoInNlbnNfY25jIiwgInNlbnNfZ29kIiwgInNlbnNfdGJsIiwgInNlbnNfZ2hzIiwgInNlbnNfaGFwIiksIAogICAgICAgICAgY29sX25hbWVzID0gYygic2Vuc19jbmMiID0gIkNhbmNlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX2dvZCIgPSAiR29kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfdGJsIiA9ICJUYWJsZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19naHMiID0gIkdob3N0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX2hhcCIgPSAiSGFycnkgUG90dGVyIiksIAogICAgICAgICAgdGl0bGUgPSAiVVMgVmVyc2lvbiAyLS1DYW4gX18gYmUgc2Vuc2VkPyIsIAogICAgICAgICAgZGF0YSA9IGRmX3NlbnMpCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyMgQk9USCBWRVJTSU9OUyBDT01CSU5FRCBCWSBRVUVTVElPTiBUWVBFIAp1c19zZW5zX2NvbWJpbmVkIDwtIGRmX3NlbnMgJT4lCiAgZmlsdGVyKG9udF9jdHJ5X25hbWUgPT0gIlVTIikgJT4lCiAgc2VsZWN0KHNlbnNfZ3JtLCBzZW5zX2RlbSwgc2Vuc19tdWcsIHNlbnNfZ3Z0LCBzZW5zX3NtbiwKICAgICAgICAgc2Vuc19jbmMsIHNlbnNfZ29kLCBzZW5zX3RibCwgc2Vuc19naHMsIHNlbnNfaGFwKSAlPiUKICBtdXRhdGUoYWNyb3NzKGV2ZXJ5dGhpbmcoKSwgYXMubnVtZXJpYykpICU+JQogIHBpdm90X2xvbmdlcihldmVyeXRoaW5nKCksIG5hbWVzX3RvID0gInF1ZXN0aW9uIiwgdmFsdWVzX3RvID0gInJlc3BvbnNlIikgJT4lCiAgbXV0YXRlKAogICAgcXVlc3Rpb25fdHlwZSA9IHJlY29kZShxdWVzdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19ncm0gPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfZ3Z0ID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX2NuYyA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19tdWcgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX3RibCA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfZ29kID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfZGVtID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfZ2hzID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfaGFwID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfc21uID0gIkZpY3Rpb25hbCIpCiAgKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgJT4lCiAgZ3JvdXBfYnkocXVlc3Rpb25fdHlwZSkgJT4lCiAgc3VtbWFyaXNlKAogICAgeWVzX2NvdW50ID0gc3VtKHJlc3BvbnNlID09IDEpLAogICAgdG90YWxfY291bnQgPSBuKCksCiAgICBwcm9wb3J0aW9uX3llcyA9IHllc19jb3VudCAvIHRvdGFsX2NvdW50CiAgKSAlPiUKICBhcnJhbmdlKGRlc2MocHJvcG9ydGlvbl95ZXMpKSAgIyBPcmRlciBieSBwcm9wb3J0aW9uCgojIENyZWF0ZSBiYXIgcGxvdAp1c19zZW5zX2NvbWJpbmVkICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocXVlc3Rpb25fdHlwZSwgLXByb3BvcnRpb25feWVzKSwgeSA9IHByb3BvcnRpb25feWVzLCBmaWxsID0gcXVlc3Rpb25fdHlwZSkpICsKICBnZW9tX2NvbCh3aWR0aCA9IDAuOCkgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArICAjIFJlbW92ZXMgdGhlIGxlZ2VuZAogIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQocHJvcG9ydGlvbl95ZXMsIGFjY3VyYWN5ID0gMSkpLCAgIyBBZGQgdGV4dCBvbiB0aGUgYmFycwogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwgY29sb3IgPSAid2hpdGUiLCBzaXplID0gNSkgKyAgIyBBZGp1c3QgdGV4dCBhcHBlYXJhbmNlCiAgbGFicygKICAgIHRpdGxlID0gIlVTOiBDYW4gX18gYmUgc2Vuc2VkPy0tUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMgYnkgUXVlc3Rpb24gVHlwZSIsCiAgICB4ID0gIlF1ZXN0aW9uIFR5cGUiLAogICAgeSA9ICJQcm9wb3J0aW9uIG9mICdZZXMnIFJlc3BvbnNlcyIpCmBgYAoKIyMjIEdoYW5hIAoKYGBge3J9CiMgVmVyc2lvbiAxIC0tIDM1IHBhcnRpY2lwYW50cwpleGlzdF9iYXIoY291bnRyeSA9ICJHaGFuYSIsIHZlcnNpb24gPSAxLCAKICAgICAgICAgIGNvbHMgPSBjKCJzZW5zX2dybSIsICJzZW5zX2RlbSIsICJzZW5zX211ZyIsICJzZW5zX2ZyYyIsICJzZW5zX3NtbiIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNlbnNfZ3JtIiA9ICJHZXJtcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX2RlbSIgPSAiRGVtb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfbXVnIiA9ICJDb2ZmZWUgTXVncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX2ZyYyIgPSAiRm9yY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19zbW4iID0gIlN1cGVybWFuIiksIAogICAgICAgICAgdGl0bGUgPSAiR2hhbmEgVmVyc2lvbiAxLS1DYW4gX18gYmUgc2Vuc2VkPyIsIAogICAgICAgICAgZGF0YSA9IGRmX3NlbnMpCgojIFZlcnNpb24gMiAtLSAzNSBwYXJ0aWNpcGFudHMKZXhpc3RfYmFyKGNvdW50cnkgPSAiR2hhbmEiLCB2ZXJzaW9uID0gMiwgCiAgICAgICAgICBjb2xzID0gYygic2Vuc19jbmMiLCAic2Vuc19nb2QiLCAic2Vuc190YmwiLCAic2Vuc19hYnMiLCAic2Vuc19rd2siKSwgCiAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJzZW5zX2NuYyIgPSAiQ2FuY2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfZ29kIiA9ICJHb2QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc190YmwiID0gIlRhYmxlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX2FicyIgPSAiQWJvc29tIChzbWFsbCBnb2QpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfa3drIiA9ICJLd2VrdSBBbmFuc2UgKGZpYy4gY2hhci4pIiksIAogICAgICAgICAgdGl0bGUgPSAiR2hhbmEgVmVyc2lvbiAyLS1DYW4gX18gYmUgc2Vuc2VkPyIsIAogICAgICAgICAgZGF0YSA9IGRmX3NlbnMpCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIyBCT1RIIFZFUlNJT05TIENPTUJJTkVEIEJZIFFVRVNUSU9OIFRZUEUgCmdoX3NlbnNfY29tYmluZWQgPC0gZGZfc2VucyAlPiUKICBmaWx0ZXIob250X2N0cnlfbmFtZSA9PSAiR2hhbmEiKSAlPiUKICBzZWxlY3Qoc2Vuc19ncm0sIHNlbnNfZGVtLCBzZW5zX211Zywgc2Vuc19mcmMsIHNlbnNfc21uLAogICAgICAgICBzZW5zX2NuYywgc2Vuc19nb2QsIHNlbnNfdGJsLCBzZW5zX2Ficywgc2Vuc19rd2spICU+JQogIG11dGF0ZShhY3Jvc3MoZXZlcnl0aGluZygpLCBhcy5udW1lcmljKSkgJT4lCiAgcGl2b3RfbG9uZ2VyKGV2ZXJ5dGhpbmcoKSwgbmFtZXNfdG8gPSAicXVlc3Rpb24iLCB2YWx1ZXNfdG8gPSAicmVzcG9uc2UiKSAlPiUKICBtdXRhdGUoCiAgICBxdWVzdGlvbl90eXBlID0gcmVjb2RlKHF1ZXN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX2dybSA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19mcmMgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfY25jID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX211ZyA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfdGJsID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19nb2QgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19kZW0gPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19hYnMgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19rd2sgPSAiRmljdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19zbW4gPSAiRmljdGlvbmFsIikKICApICU+JQogIGZpbHRlcighaXMubmEocmVzcG9uc2UpKSAlPiUKICBncm91cF9ieShxdWVzdGlvbl90eXBlKSAlPiUKICBzdW1tYXJpc2UoCiAgICB5ZXNfY291bnQgPSBzdW0ocmVzcG9uc2UgPT0gMSksCiAgICB0b3RhbF9jb3VudCA9IG4oKSwKICAgIHByb3BvcnRpb25feWVzID0geWVzX2NvdW50IC8gdG90YWxfY291bnQKICApICU+JQogIGFycmFuZ2UoZGVzYyhwcm9wb3J0aW9uX3llcykpICAjIE9yZGVyIGJ5IHByb3BvcnRpb24KCiMgQ3JlYXRlIGJhciBwbG90CmdoX3NlbnNfY29tYmluZWQgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcmVvcmRlcihxdWVzdGlvbl90eXBlLCAtcHJvcG9ydGlvbl95ZXMpLCB5ID0gcHJvcG9ydGlvbl95ZXMsIGZpbGwgPSBxdWVzdGlvbl90eXBlKSkgKwogIGdlb21fY29sKHdpZHRoID0gMC44KSArCiAgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IHNjYWxlczo6cGVyY2VudF9mb3JtYXQoYWNjdXJhY3kgPSAxKSkgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsgICMgUmVtb3ZlcyB0aGUgbGVnZW5kCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChwcm9wb3J0aW9uX3llcywgYWNjdXJhY3kgPSAxKSksICAjIEFkZCB0ZXh0IG9uIHRoZSBiYXJzCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpLCBjb2xvciA9ICJ3aGl0ZSIsIHNpemUgPSA1KSArICAjIEFkanVzdCB0ZXh0IGFwcGVhcmFuY2UKICBsYWJzKAogICAgdGl0bGUgPSAiR2hhbmE6IENhbiBfXyBiZSBzZW5zZWQ/LS1Qcm9wb3J0aW9uIG9mICdZZXMnIFJlc3BvbnNlcyBieSBRdWVzdGlvbiBUeXBlIiwKICAgIHggPSAiUXVlc3Rpb24gVHlwZSIsCiAgICB5ID0gIlByb3BvcnRpb24gb2YgJ1llcycgUmVzcG9uc2VzIikKYGBgCgojIyMgRWN1YWRvcgoKYGBge3J9CiMgVmVyc2lvbiAxIC0tIDEwIHBhcnRpY2lwYW50cyAKZXhpc3RfYmFyKGNvdW50cnkgPSAiRWN1YWRvciIsIHZlcnNpb24gPSAxLCAKICAgICAgICAgIGNvbHMgPSBjKCJzZW5zX2ZsdSIsICJzZW5zX3dlbiIsICJzZW5zX211ZyIsICJzZW5zX3BhciIsICJzZW5zX3NwZCIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNlbnNfZmx1IiA9ICJEYWljYXdvIChmbHUpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfd2VuIiA9ICJXZW5lIChkZW1vbi9mb3Jlc3QgZ29kKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX211ZyIgPSAiQ29mZmVlIE11Z3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19wYXIiID0gIkludGVzdGluYWwgUGFyYXNpdGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfc3BkIiA9ICJTcGlkZXJtYW4iKSwgCiAgICAgICAgICB0aXRsZSA9ICJFY3VhZG9yaWFuIEFtYXpvbiBWZXJzaW9uIDEtLUNhbiBfXyBiZSBzZW5zZWQ/IiwgCiAgICAgICAgICBkYXRhID0gZGZfc2VucykKCiMgVmVyc2lvbiAyIC0tIDEwIHBhcnRpY2lwYW50cwpleGlzdF9iYXIoY291bnRyeSA9ICJFY3VhZG9yIiwgdmVyc2lvbiA9IDIsIAogICAgICAgICAgY29scyA9IGMoInNlbnNfY25jIiwgInNlbnNfZ29kIiwgInNlbnNfdGJsIiwgInNlbnNfb2t3IiwgInNlbnNfcmFtIiksIAogICAgICAgICAgY29sX25hbWVzID0gYygic2Vuc19jbmMiID0gIkNhbmNlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX2dvZCIgPSAiR29kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfdGJsIiA9ICJUYWJsZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19va3ciID0gIk9ub2thd2EgKGdob3N0KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX3JhbSIgPSAiUmFtYm8iKSwgCiAgICAgICAgICB0aXRsZSA9ICJFY3VhZG9yaWFuIEFtYXpvbiBWZXJzaW9uIDItLUNhbiBfXyBiZSBzZW5zZWQ/IiwgCiAgICAgICAgICBkYXRhID0gZGZfc2VucykKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMjIEJPVEggVkVSU0lPTlMgQ09NQklORUQgQlkgUVVFU1RJT04gVFlQRSAKZWNfc2Vuc19jb21iaW5lZCA8LSBkZl9zZW5zICU+JQogIGZpbHRlcihvbnRfY3RyeV9uYW1lID09ICJFY3VhZG9yIikgJT4lCiAgc2VsZWN0KHNlbnNfZmx1LCBzZW5zX3dlbiwgc2Vuc19tdWcsIHNlbnNfcGFyLCBzZW5zX3NwZCwKICAgICAgICAgc2Vuc19jbmMsIHNlbnNfZ29kLCBzZW5zX3RibCwgc2Vuc19va3csIHNlbnNfcmFtKSAlPiUKICBtdXRhdGUoYWNyb3NzKGV2ZXJ5dGhpbmcoKSwgYXMubnVtZXJpYykpICU+JQogIHBpdm90X2xvbmdlcihldmVyeXRoaW5nKCksIG5hbWVzX3RvID0gInF1ZXN0aW9uIiwgdmFsdWVzX3RvID0gInJlc3BvbnNlIikgJT4lCiAgbXV0YXRlKAogICAgcXVlc3Rpb25fdHlwZSA9IHJlY29kZShxdWVzdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19mbHUgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfcGFyID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX2NuYyA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19tdWcgPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX3RibCA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfZ29kID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfd2VuID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfb2t3ID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfc3BkID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfcmFtID0gIkZpY3Rpb25hbCIpCiAgKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgJT4lCiAgZ3JvdXBfYnkocXVlc3Rpb25fdHlwZSkgJT4lCiAgc3VtbWFyaXNlKAogICAgeWVzX2NvdW50ID0gc3VtKHJlc3BvbnNlID09IDEpLAogICAgdG90YWxfY291bnQgPSBuKCksCiAgICBwcm9wb3J0aW9uX3llcyA9IHllc19jb3VudCAvIHRvdGFsX2NvdW50CiAgKSAlPiUKICBhcnJhbmdlKGRlc2MocHJvcG9ydGlvbl95ZXMpKSAgIyBPcmRlciBieSBwcm9wb3J0aW9uCgojIENyZWF0ZSBiYXIgcGxvdAplY19zZW5zX2NvbWJpbmVkICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocXVlc3Rpb25fdHlwZSwgLXByb3BvcnRpb25feWVzKSwgeSA9IHByb3BvcnRpb25feWVzLCBmaWxsID0gcXVlc3Rpb25fdHlwZSkpICsKICBnZW9tX2NvbCh3aWR0aCA9IDAuOCkgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArICAjIFJlbW92ZXMgdGhlIGxlZ2VuZAogIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQocHJvcG9ydGlvbl95ZXMsIGFjY3VyYWN5ID0gMSkpLCAgIyBBZGQgdGV4dCBvbiB0aGUgYmFycwogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwgY29sb3IgPSAid2hpdGUiLCBzaXplID0gNSkgKyAgIyBBZGp1c3QgdGV4dCBhcHBlYXJhbmNlCiAgbGFicygKICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uOkNhbiBfXyBiZSBzZW5zZWQ/LS1Qcm9wb3J0aW9uIG9mICdZZXMnIFJlc3BvbnNlcyBieSBRdWVzdGlvbiBUeXBlIiwKICAgIHggPSAiUXVlc3Rpb24gVHlwZSIsCiAgICB5ID0gIlByb3BvcnRpb24gb2YgJ1llcycgUmVzcG9uc2VzIikKYGBgCgojIyMgUGVydQoKYGBge3J9CiMgVmVyc2lvbiAxIC0tIDIxIHBhcnRpY2lwYW50cwpleGlzdF9iYXIoY291bnRyeSA9ICJQZXJ1IiwgdmVyc2lvbiA9IDEsIAogICAgICAgICAgY29scyA9IGMoInNlbnNfeXNoIiwgInNlbnNfcGFyIiwgInNlbnNfZ29kIiwgInNlbnNfdGJsIiwgInNlbnNfbmp0IiwgInNlbnNfY2hhIiwgInNlbnNfY25jIiksIAogICAgICAgICAgY29sX25hbWVzID0gYygic2Vuc195c2giID0gIk1haHVhIFlvc2hpblxuKGJhZCBzcGlyaXQpIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19wYXIiID0gIkludGVzdGluYWwgUGFyYXNpdGVzIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19nb2QiID0gIkdvZCIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfdGJsIiA9ICJUYWJsZXMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX25qdCIgPSAiTmluamEgVHVydGxlcyIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfY2hhIiA9ICJDaGFpa29uaVxuKGludmlzaWJsZSBtYWdpYyBodW1hbnMpIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19jbmMiID0gIkNhbmNlciIpLCAKICAgICAgICAgIHRpdGxlID0gIlBlcnV2aWFuIEFtYXpvbiBWZXJzaW9uIDEtLUNhbiBfXyBiZSBzZW5zZWQ/IiwgCiAgICAgICAgICBkYXRhID0gZGZfc2VucykKCgojIFZlcnNpb24gMiAtLSAxOSBwYXJ0aWNpcGFudHMKZXhpc3RfYmFyKGNvdW50cnkgPSAiUGVydSIsIHZlcnNpb24gPSAyLCAKICAgICAgICAgIGNvbHMgPSBjKCJzZW5zX2dybSIsICJzZW5zX3JvbiIsICJzZW5zX3RheiIsICJzZW5zX29uaSIsICJzZW5zX3NtbiIsICJzZW5zX2RscCIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInNlbnNfZ3JtIiA9ICJHZXJtcyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc19yb24iID0gIlJvbmluXG4oQW5hY29uZGEpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfdGF6IiA9ICJDb2ZmZWUgTXVnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfb25pIiA9ICJPbmkgSWJvXG4oZ29vZCBzcGlyaXQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNfc21uIiA9ICJTdXBlcm1hbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zX2RscCIgPSAiSm9zaGluIEtva29zaGthXG4ocGluayByaXZlciBkb2xwaGluKSIpLCAKICAgICAgICAgIHRpdGxlID0gIlBlcnV2aWFuIEFtYXpvbiBWZXJzaW9uIDItLUNhbiBfXyBiZSBzZW5zZWQ/IiwgCiAgICAgICAgICBkYXRhID0gZGZfc2VucykKCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEJPVEggVkVSU0lPTlMgQ09NQklORUQKCnBlcnVfc2Vuc19jb21iaW5lZCA8LSBkZl9zZW5zICU+JQogIGZpbHRlcihvbnRfY3RyeV9uYW1lID09ICJQZXJ1IikgJT4lCiAgc2VsZWN0KHNlbnNfeXNoLCBzZW5zX3Bhciwgc2Vuc19nb2QsIHNlbnNfdGJsLCBzZW5zX25qdCwgc2Vuc19jaGEsIHNlbnNfY25jLAogICAgICAgICBzZW5zX2dybSwgc2Vuc19yb24sIHNlbnNfdGF6LCBzZW5zX29uaSwgc2Vuc19zbW4sIHNlbnNfZGxwKSAlPiUKICBtdXRhdGUoYWNyb3NzKGV2ZXJ5dGhpbmcoKSwgYXMubnVtZXJpYykpICU+JQogIHBpdm90X2xvbmdlcihldmVyeXRoaW5nKCksIG5hbWVzX3RvID0gInF1ZXN0aW9uIiwgdmFsdWVzX3RvID0gInJlc3BvbnNlIikgJT4lCiAgbXV0YXRlKAogICAgcXVlc3Rpb25fdHlwZSA9IHJlY29kZShxdWVzdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc19wYXIgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfY25jID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX2dybSA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc190YXogPSAiT3JkaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX3RibCA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfeXNoID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfZ29kID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfY2hhID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfcm9uID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNfb25pID0gIlN1cGVybmF0dXJhbCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX2RscCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX25qdCA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zX3NtbiA9ICJGaWN0aW9uYWwiKQogICkgJT4lCiAgZmlsdGVyKCFpcy5uYShyZXNwb25zZSkpICU+JQogIGdyb3VwX2J5KHF1ZXN0aW9uX3R5cGUpICU+JQogIHN1bW1hcmlzZSgKICAgIHllc19jb3VudCA9IHN1bShyZXNwb25zZSA9PSAxKSwKICAgIHRvdGFsX2NvdW50ID0gbigpLAogICAgcHJvcG9ydGlvbl95ZXMgPSB5ZXNfY291bnQgLyB0b3RhbF9jb3VudAogICkgJT4lCiAgYXJyYW5nZShkZXNjKHByb3BvcnRpb25feWVzKSkgICMgT3JkZXIgYnkgcHJvcG9ydGlvbgoKIyBDcmVhdGUgYmFyIHBsb3QKcGVydV9zZW5zX2NvbWJpbmVkICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocXVlc3Rpb25fdHlwZSwgLXByb3BvcnRpb25feWVzKSwgeSA9IHByb3BvcnRpb25feWVzLCBmaWxsID0gcXVlc3Rpb25fdHlwZSkpICsKICBnZW9tX2NvbCh3aWR0aCA9IDAuOCkgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArICAjIFJlbW92ZXMgdGhlIGxlZ2VuZAogIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQocHJvcG9ydGlvbl95ZXMsIGFjY3VyYWN5ID0gMSkpLCAgIyBBZGQgdGV4dCBvbiB0aGUgYmFycwogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwgY29sb3IgPSAid2hpdGUiLCBzaXplID0gNSkgKyAgIyBBZGp1c3QgdGV4dCBhcHBlYXJhbmNlCiAgbGFicygKICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uOkNhbiBfXyBiZSBzZW5zZWQ/LS1Qcm9wb3J0aW9uIG9mICdZZXMnIFJlc3BvbnNlcyBieSBRdWVzdGlvbiBUeXBlIiwKICAgIHggPSAiUXVlc3Rpb24gVHlwZSIsCiAgICB5ID0gIlByb3BvcnRpb24gb2YgJ1llcycgUmVzcG9uc2VzIikKYGBgCgojIyBIYXZlIHlvdSBldmVyIHNlbnNlZCBYPyAKCiMjIyBVUwoKYGBge3J9CiMgSnVzdCB2ZXJzaW9uIDEgcXVlc3Rpb25zLS10aGVyZSBhcmUgMjEgcGFydGljaXBhbnRzCmV4aXN0X2Jhcihjb3VudHJ5ID0gIlVTIiwgdmVyc2lvbiA9IDEsIAogICAgICAgICAgY29scyA9IGMoInVzZW5zX2dybSIsICJ1c2Vuc19kZW0iLCAidXNlbnNfbXVnIiwgInVzZW5zX2d2dCIsICJ1c2Vuc19zbW4iKSwgCiAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJ1c2Vuc19ncm0iID0gIkdlcm1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZW5zX2RlbSIgPSAiRGVtb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZW5zX211ZyIgPSAiQ29mZmVlIE11Z3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfZ3Z0IiA9ICJHcmF2aXR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZW5zX3NtbiIgPSAiU3VwZXJtYW4iKSwgCiAgICAgICAgICB0aXRsZSA9ICJVUyBWZXJzaW9uIDEtLUhhdmUgeW91IGV2ZXIgc2Vuc2VkIF9fPyIsIAogICAgICAgICAgZGF0YSA9IGRmX3VzZW5zKQoKCiMgVmVyc2lvbiAyIC0tIDI4IHBhcnRpY2lwYW50cwpleGlzdF9iYXIoY291bnRyeSA9ICJVUyIsIHZlcnNpb24gPSAyLCAKICAgICAgICAgIGNvbHMgPSBjKCJ1c2Vuc19jbmMiLCAidXNlbnNfZ29kIiwgInVzZW5zX3RibCIsICJ1c2Vuc19naHMiLCAidXNlbnNfaGFwIiksIAogICAgICAgICAgY29sX25hbWVzID0gYygidXNlbnNfY25jIiA9ICJDYW5jZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfZ29kIiA9ICJHb2QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfdGJsIiA9ICJUYWJsZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfZ2hzIiA9ICJHaG9zdHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfaGFwIiA9ICJIYXJyeSBQb3R0ZXIiKSwgCiAgICAgICAgICB0aXRsZSA9ICJVUyBWZXJzaW9uIDItLUhhdmUgeW91IGV2ZXIgc2Vuc2VkIF9fPyIsIAogICAgICAgICAgZGF0YSA9IGRmX3VzZW5zKQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMjIEJPVEggVkVSU0lPTlMgQ09NQklORUQgQlkgUVVFU1RJT04gVFlQRSAKdXNfdXNlbnNfY29tYmluZWQgPC0gZGZfdXNlbnMgJT4lCiAgZmlsdGVyKG9udF9jdHJ5X25hbWUgPT0gIlVTIikgJT4lCiAgc2VsZWN0KHVzZW5zX2dybSwgdXNlbnNfZGVtLCB1c2Vuc19tdWcsIHVzZW5zX2d2dCwgdXNlbnNfc21uLAogICAgICAgICB1c2Vuc19jbmMsIHVzZW5zX2dvZCwgdXNlbnNfdGJsLCB1c2Vuc19naHMsIHVzZW5zX2hhcCkgJT4lCiAgbXV0YXRlKGFjcm9zcyhldmVyeXRoaW5nKCksIGFzLm51bWVyaWMpKSAlPiUKICBwaXZvdF9sb25nZXIoZXZlcnl0aGluZygpLCBuYW1lc190byA9ICJxdWVzdGlvbiIsIHZhbHVlc190byA9ICJyZXNwb25zZSIpICU+JQogIG11dGF0ZSgKICAgIHF1ZXN0aW9uX3R5cGUgPSByZWNvZGUocXVlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2dybSA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfZ3Z0ID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19jbmMgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX211ZyA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3RibCA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2dvZCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19kZW0gPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfZ2hzID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2hhcCA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19zbW4gPSAiRmljdGlvbmFsIikKICApICU+JQogIGZpbHRlcighaXMubmEocmVzcG9uc2UpKSAlPiUKICBncm91cF9ieShxdWVzdGlvbl90eXBlKSAlPiUKICBzdW1tYXJpc2UoCiAgICB5ZXNfY291bnQgPSBzdW0ocmVzcG9uc2UgPT0gMSksCiAgICB0b3RhbF9jb3VudCA9IG4oKSwKICAgIHByb3BvcnRpb25feWVzID0geWVzX2NvdW50IC8gdG90YWxfY291bnQKICApICU+JQogIGFycmFuZ2UoZGVzYyhwcm9wb3J0aW9uX3llcykpICAjIE9yZGVyIGJ5IHByb3BvcnRpb24KCiMgQ3JlYXRlIGJhciBwbG90CnVzX3VzZW5zX2NvbWJpbmVkICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocXVlc3Rpb25fdHlwZSwgLXByb3BvcnRpb25feWVzKSwgeSA9IHByb3BvcnRpb25feWVzLCBmaWxsID0gcXVlc3Rpb25fdHlwZSkpICsKICBnZW9tX2NvbCh3aWR0aCA9IDAuOCkgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArICAjIFJlbW92ZXMgdGhlIGxlZ2VuZAogIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQocHJvcG9ydGlvbl95ZXMsIGFjY3VyYWN5ID0gMSkpLCAgIyBBZGQgdGV4dCBvbiB0aGUgYmFycwogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwgY29sb3IgPSAid2hpdGUiLCBzaXplID0gNSkgKyAgIyBBZGp1c3QgdGV4dCBhcHBlYXJhbmNlCiAgbGFicygKICAgIHRpdGxlID0gIlVTOiBIYXZlIHlvdSBldmVyIHNlbnNlZCBfXz8tLVByb3BvcnRpb24gb2YgJ1llcycgUmVzcG9uc2VzIGJ5IFF1ZXN0aW9uIFR5cGUiLAogICAgeCA9ICJRdWVzdGlvbiBUeXBlIiwKICAgIHkgPSAiUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMiKQpgYGAKCiMjIyBHaGFuYSAKCmBgYHtyfQojIFZlcnNpb24gMSAtLSAzNSBwYXJ0aWNpcGFudHMKZXhpc3RfYmFyKGNvdW50cnkgPSAiR2hhbmEiLCB2ZXJzaW9uID0gMSwgCiAgICAgICAgICBjb2xzID0gYygidXNlbnNfZ3JtIiwgInVzZW5zX2RlbSIsICJ1c2Vuc19tdWciLCAidXNlbnNfZnJjIiwgInVzZW5zX3NtbiIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInVzZW5zX2dybSIgPSAiR2VybXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfZGVtIiA9ICJEZW1vbnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfbXVnIiA9ICJDb2ZmZWUgTXVncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc19mcmMiID0gIkZvcmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZW5zX3NtbiIgPSAiU3VwZXJtYW4iKSwgCiAgICAgICAgICB0aXRsZSA9ICJHaGFuYSBWZXJzaW9uIDEtLUhhdmUgeW91IGV2ZXIgc2Vuc2VkIF9fPyIsIAogICAgICAgICAgZGF0YSA9IGRmX3VzZW5zKQoKIyBWZXJzaW9uIDIgLS0gMzUgcGFydGljaXBhbnRzCmV4aXN0X2Jhcihjb3VudHJ5ID0gIkdoYW5hIiwgdmVyc2lvbiA9IDIsIAogICAgICAgICAgY29scyA9IGMoInVzZW5zX2NuYyIsICJ1c2Vuc19nb2QiLCAidXNlbnNfdGJsIiwgInVzZW5zX2FicyIsICJ1c2Vuc19rd2siKSwgCiAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJ1c2Vuc19jbmMiID0gIkNhbmNlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc19nb2QiID0gIkdvZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc190YmwiID0gIlRhYmxlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc19hYnMiID0gIkFib3NvbSAoc21hbGwgZ29kKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc19rd2siID0gIkt3ZWt1IEFuYW5zZSAoZmljLiBjaGFyLikiKSwgCiAgICAgICAgICB0aXRsZSA9ICJHaGFuYSBWZXJzaW9uIDItLUhhdmUgeW91IGV2ZXIgc2Vuc2VkIF9fPyIsIAogICAgICAgICAgZGF0YSA9IGRmX3VzZW5zKQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyMgQk9USCBWRVJTSU9OUyBDT01CSU5FRCBCWSBRVUVTVElPTiBUWVBFIApnaF91c2Vuc19jb21iaW5lZCA8LSBkZl91c2VucyAlPiUKICBmaWx0ZXIob250X2N0cnlfbmFtZSA9PSAiR2hhbmEiKSAlPiUKICBzZWxlY3QodXNlbnNfZ3JtLCB1c2Vuc19kZW0sIHVzZW5zX211ZywgdXNlbnNfZnJjLCB1c2Vuc19zbW4sCiAgICAgICAgIHVzZW5zX2NuYywgdXNlbnNfZ29kLCB1c2Vuc190YmwsIHVzZW5zX2FicywgdXNlbnNfa3drKSAlPiUKICBtdXRhdGUoYWNyb3NzKGV2ZXJ5dGhpbmcoKSwgYXMubnVtZXJpYykpICU+JQogIHBpdm90X2xvbmdlcihldmVyeXRoaW5nKCksIG5hbWVzX3RvID0gInF1ZXN0aW9uIiwgdmFsdWVzX3RvID0gInJlc3BvbnNlIikgJT4lCiAgbXV0YXRlKAogICAgcXVlc3Rpb25fdHlwZSA9IHJlY29kZShxdWVzdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfZ3JtID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19mcmMgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2NuYyA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfbXVnID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfdGJsID0gIk9yZGluYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfZ29kID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2RlbSA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19hYnMgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfa3drID0gIkZpY3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3NtbiA9ICJGaWN0aW9uYWwiKQogICkgJT4lCiAgZmlsdGVyKCFpcy5uYShyZXNwb25zZSkpICU+JQogIGdyb3VwX2J5KHF1ZXN0aW9uX3R5cGUpICU+JQogIHN1bW1hcmlzZSgKICAgIHllc19jb3VudCA9IHN1bShyZXNwb25zZSA9PSAxKSwKICAgIHRvdGFsX2NvdW50ID0gbigpLAogICAgcHJvcG9ydGlvbl95ZXMgPSB5ZXNfY291bnQgLyB0b3RhbF9jb3VudAogICkgJT4lCiAgYXJyYW5nZShkZXNjKHByb3BvcnRpb25feWVzKSkgICMgT3JkZXIgYnkgcHJvcG9ydGlvbgoKIyBDcmVhdGUgYmFyIHBsb3QKZ2hfdXNlbnNfY29tYmluZWQgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcmVvcmRlcihxdWVzdGlvbl90eXBlLCAtcHJvcG9ydGlvbl95ZXMpLCB5ID0gcHJvcG9ydGlvbl95ZXMsIGZpbGwgPSBxdWVzdGlvbl90eXBlKSkgKwogIGdlb21fY29sKHdpZHRoID0gMC44KSArCiAgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IHNjYWxlczo6cGVyY2VudF9mb3JtYXQoYWNjdXJhY3kgPSAxKSkgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsgICMgUmVtb3ZlcyB0aGUgbGVnZW5kCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChwcm9wb3J0aW9uX3llcywgYWNjdXJhY3kgPSAxKSksICAjIEFkZCB0ZXh0IG9uIHRoZSBiYXJzCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpLCBjb2xvciA9ICJ3aGl0ZSIsIHNpemUgPSA1KSArICAjIEFkanVzdCB0ZXh0IGFwcGVhcmFuY2UKICBsYWJzKAogICAgdGl0bGUgPSAiR2hhbmE6IEhhdmUgeW91IGV2ZXIgc2Vuc2VkIF9fPy0tUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMgYnkgUXVlc3Rpb24gVHlwZSIsCiAgICB4ID0gIlF1ZXN0aW9uIFR5cGUiLAogICAgeSA9ICJQcm9wb3J0aW9uIG9mICdZZXMnIFJlc3BvbnNlcyIpCmBgYAoKIyMjIEVjdWFkb3IKCmBgYHtyfQojIFZlcnNpb24gMSAtLSAxMCBwYXJ0aWNpcGFudHMgCmV4aXN0X2Jhcihjb3VudHJ5ID0gIkVjdWFkb3IiLCB2ZXJzaW9uID0gMSwgCiAgICAgICAgICBjb2xzID0gYygidXNlbnNfZmx1IiwgInVzZW5zX3dlbiIsICJ1c2Vuc19tdWciLCAidXNlbnNfcGFyIiwgInVzZW5zX3NwZCIpLCAKICAgICAgICAgIGNvbF9uYW1lcyA9IGMoInVzZW5zX2ZsdSIgPSAiRGFpY2F3byAoZmx1KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc193ZW4iID0gIldlbmUgKGRlbW9uL2ZvcmVzdCBnb2QpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZW5zX211ZyIgPSAiQ29mZmVlIE11Z3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfcGFyIiA9ICJJbnRlc3RpbmFsIFBhcmFzaXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc19zcGQiID0gIlNwaWRlcm1hbiIpLCAKICAgICAgICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uIFZlcnNpb24gMS0tSGF2ZSB5b3UgZXZlciBzZW5zZWQgX18/IiwgCiAgICAgICAgICBkYXRhID0gZGZfdXNlbnMpCgojIFZlcnNpb24gMiAtLSAxMCBwYXJ0aWNpcGFudHMKZXhpc3RfYmFyKGNvdW50cnkgPSAiRWN1YWRvciIsIHZlcnNpb24gPSAyLCAKICAgICAgICAgIGNvbHMgPSBjKCJ1c2Vuc19jbmMiLCAidXNlbnNfZ29kIiwgInVzZW5zX3RibCIsICJ1c2Vuc19va3ciLCAidXNlbnNfcmFtIiksIAogICAgICAgICAgY29sX25hbWVzID0gYygidXNlbnNfY25jIiA9ICJDYW5jZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfZ29kIiA9ICJHb2QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfdGJsIiA9ICJUYWJsZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfb2t3IiA9ICJPbm9rYXdhIChnaG9zdCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfcmFtIiA9ICJSYW1ibyIpLCAKICAgICAgICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uIFZlcnNpb24gMi0tSGF2ZSB5b3UgZXZlciBzZW5zZWQgX18/IiwgCiAgICAgICAgICBkYXRhID0gZGZfdXNlbnMpCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIyBCT1RIIFZFUlNJT05TIENPTUJJTkVEIEJZIFFVRVNUSU9OIFRZUEUgCmVjX3VzZW5zX2NvbWJpbmVkIDwtIGRmX3VzZW5zICU+JQogIGZpbHRlcihvbnRfY3RyeV9uYW1lID09ICJFY3VhZG9yIikgJT4lCiAgc2VsZWN0KHVzZW5zX2ZsdSwgdXNlbnNfd2VuLCB1c2Vuc19tdWcsIHVzZW5zX3BhciwgdXNlbnNfc3BkLAogICAgICAgICB1c2Vuc19jbmMsIHVzZW5zX2dvZCwgdXNlbnNfdGJsLCB1c2Vuc19va3csIHVzZW5zX3JhbSkgJT4lCiAgbXV0YXRlKGFjcm9zcyhldmVyeXRoaW5nKCksIGFzLm51bWVyaWMpKSAlPiUKICBwaXZvdF9sb25nZXIoZXZlcnl0aGluZygpLCBuYW1lc190byA9ICJxdWVzdGlvbiIsIHZhbHVlc190byA9ICJyZXNwb25zZSIpICU+JQogIG11dGF0ZSgKICAgIHF1ZXN0aW9uX3R5cGUgPSByZWNvZGUocXVlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2ZsdSA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfcGFyID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19jbmMgPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX211ZyA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3RibCA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2dvZCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc193ZW4gPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfb2t3ID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3NwZCA9ICJGaWN0aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19yYW0gPSAiRmljdGlvbmFsIikKICApICU+JQogIGZpbHRlcighaXMubmEocmVzcG9uc2UpKSAlPiUKICBncm91cF9ieShxdWVzdGlvbl90eXBlKSAlPiUKICBzdW1tYXJpc2UoCiAgICB5ZXNfY291bnQgPSBzdW0ocmVzcG9uc2UgPT0gMSksCiAgICB0b3RhbF9jb3VudCA9IG4oKSwKICAgIHByb3BvcnRpb25feWVzID0geWVzX2NvdW50IC8gdG90YWxfY291bnQKICApICU+JQogIGFycmFuZ2UoZGVzYyhwcm9wb3J0aW9uX3llcykpICAjIE9yZGVyIGJ5IHByb3BvcnRpb24KCiMgQ3JlYXRlIGJhciBwbG90CmVjX3VzZW5zX2NvbWJpbmVkICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocXVlc3Rpb25fdHlwZSwgLXByb3BvcnRpb25feWVzKSwgeSA9IHByb3BvcnRpb25feWVzLCBmaWxsID0gcXVlc3Rpb25fdHlwZSkpICsKICBnZW9tX2NvbCh3aWR0aCA9IDAuOCkgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArICAjIFJlbW92ZXMgdGhlIGxlZ2VuZAogIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQocHJvcG9ydGlvbl95ZXMsIGFjY3VyYWN5ID0gMSkpLCAgIyBBZGQgdGV4dCBvbiB0aGUgYmFycwogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwgY29sb3IgPSAid2hpdGUiLCBzaXplID0gNSkgKyAgIyBBZGp1c3QgdGV4dCBhcHBlYXJhbmNlCiAgbGFicygKICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uOkhhdmUgeW91IGV2ZXIgc2Vuc2VkIF9fPy0tUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMgYnkgUXVlc3Rpb24gVHlwZSIsCiAgICB4ID0gIlF1ZXN0aW9uIFR5cGUiLAogICAgeSA9ICJQcm9wb3J0aW9uIG9mICdZZXMnIFJlc3BvbnNlcyIpCmBgYAoKIyMjIFBlcnUKCmBgYHtyfQojIFZlcnNpb24gMSAtLSAyMSBwYXJ0aWNpcGFudHMKZXhpc3RfYmFyKGNvdW50cnkgPSAiUGVydSIsIHZlcnNpb24gPSAxLCAKICAgICAgICAgIGNvbHMgPSBjKCJ1c2Vuc195c2giLCAidXNlbnNfcGFyIiwgInVzZW5zX2dvZCIsICJ1c2Vuc190YmwiLCAidXNlbnNfbmp0IiwgInVzZW5zX2NoYSIsICJ1c2Vuc19jbmMiKSwgCiAgICAgICAgICBjb2xfbmFtZXMgPSBjKCJ1c2Vuc195c2giID0gIk1haHVhIFlvc2hpblxuKGJhZCBzcGlyaXQpIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfcGFyIiA9ICJJbnRlc3RpbmFsIFBhcmFzaXRlcyIsICAKICAgICAgICAgICAgICAgICAgICAgICAgInVzZW5zX2dvZCIgPSAiR29kIiwgIAogICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfdGJsIiA9ICJUYWJsZXMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc19uanQiID0gIk5pbmphIFR1cnRsZXMiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc19jaGEiID0gIkNoYWlrb25pXG4oaW52aXNpYmxlIG1hZ2ljIGh1bWFucykiLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc19jbmMiID0gIkNhbmNlciIpLCAKICAgICAgICAgIHRpdGxlID0gIlBlcnV2aWFuIEFtYXpvbiBWZXJzaW9uIDEtLUhhdmUgeW91IGV2ZXIgc2Vuc2VkIF9fPyIsIAogICAgICAgICAgZGF0YSA9IGRmX3VzZW5zKQoKCiMgVmVyc2lvbiAyIC0tIDE5IHBhcnRpY2lwYW50cwpleGlzdF9iYXIoY291bnRyeSA9ICJQZXJ1IiwgdmVyc2lvbiA9IDIsIAogICAgICAgICAgY29scyA9IGMoInVzZW5zX2dybSIsICJ1c2Vuc19yb24iLCAidXNlbnNfdGF6IiwgInVzZW5zX29uaSIsICJ1c2Vuc19zbW4iLCAidXNlbnNfZGxwIiksIAogICAgICAgICAgY29sX25hbWVzID0gYygidXNlbnNfZ3JtIiA9ICJHZXJtcyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfcm9uIiA9ICJSb25pblxuKEFuYWNvbmRhKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Vuc190YXoiID0gIkNvZmZlZSBNdWciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfb25pIiA9ICJPbmkgSWJvXG4oZ29vZCBzcGlyaXQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZW5zX3NtbiIgPSAiU3VwZXJtYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlbnNfZGxwIiA9ICJKb3NoaW4gS29rb3Noa2FcbihwaW5rIHJpdmVyIGRvbHBoaW4pIiksIAogICAgICAgICAgdGl0bGUgPSAiUGVydXZpYW4gQW1hem9uIFZlcnNpb24gMi0tSGF2ZSB5b3UgZXZlciBzZW5zZWQgX18/IiwgCiAgICAgICAgICBkYXRhID0gZGZfdXNlbnMpCgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBCT1RIIFZFUlNJT05TIENPTUJJTkVECgpwZXJ1X3VzZW5zX2NvbWJpbmVkIDwtIGRmX3VzZW5zICU+JQogIGZpbHRlcihvbnRfY3RyeV9uYW1lID09ICJQZXJ1IikgJT4lCiAgc2VsZWN0KHVzZW5zX3lzaCwgdXNlbnNfcGFyLCB1c2Vuc19nb2QsIHVzZW5zX3RibCwgdXNlbnNfbmp0LCB1c2Vuc19jaGEsIHVzZW5zX2NuYywKICAgICAgICAgdXNlbnNfZ3JtLCB1c2Vuc19yb24sIHVzZW5zX3RheiwgdXNlbnNfb25pLCB1c2Vuc19zbW4sIHVzZW5zX2RscCkgJT4lCiAgbXV0YXRlKGFjcm9zcyhldmVyeXRoaW5nKCksIGFzLm51bWVyaWMpKSAlPiUKICBwaXZvdF9sb25nZXIoZXZlcnl0aGluZygpLCBuYW1lc190byA9ICJxdWVzdGlvbiIsIHZhbHVlc190byA9ICJyZXNwb25zZSIpICU+JQogIG11dGF0ZSgKICAgIHF1ZXN0aW9uX3R5cGUgPSByZWNvZGUocXVlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3BhciA9ICJTY2llbnRpZmljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfY25jID0gIlNjaWVudGlmaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19ncm0gPSAiU2NpZW50aWZpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3RheiA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3RibCA9ICJPcmRpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3lzaCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19nb2QgPSAiU3VwZXJuYXR1cmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfY2hhID0gIlN1cGVybmF0dXJhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX3JvbiA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19vbmkgPSAiU3VwZXJuYXR1cmFsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5zX2RscCA9ICJTdXBlcm5hdHVyYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vuc19uanQgPSAiRmljdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbnNfc21uID0gIkZpY3Rpb25hbCIpCiAgKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgJT4lCiAgZ3JvdXBfYnkocXVlc3Rpb25fdHlwZSkgJT4lCiAgc3VtbWFyaXNlKAogICAgeWVzX2NvdW50ID0gc3VtKHJlc3BvbnNlID09IDEpLAogICAgdG90YWxfY291bnQgPSBuKCksCiAgICBwcm9wb3J0aW9uX3llcyA9IHllc19jb3VudCAvIHRvdGFsX2NvdW50CiAgKSAlPiUKICBhcnJhbmdlKGRlc2MocHJvcG9ydGlvbl95ZXMpKSAgIyBPcmRlciBieSBwcm9wb3J0aW9uCgojIENyZWF0ZSBiYXIgcGxvdApwZXJ1X3VzZW5zX2NvbWJpbmVkICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocXVlc3Rpb25fdHlwZSwgLXByb3BvcnRpb25feWVzKSwgeSA9IHByb3BvcnRpb25feWVzLCBmaWxsID0gcXVlc3Rpb25fdHlwZSkpICsKICBnZW9tX2NvbCh3aWR0aCA9IDAuOCkgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArICAjIFJlbW92ZXMgdGhlIGxlZ2VuZAogIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQocHJvcG9ydGlvbl95ZXMsIGFjY3VyYWN5ID0gMSkpLCAgIyBBZGQgdGV4dCBvbiB0aGUgYmFycwogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwgY29sb3IgPSAid2hpdGUiLCBzaXplID0gNSkgKyAgIyBBZGp1c3QgdGV4dCBhcHBlYXJhbmNlCiAgbGFicygKICAgIHRpdGxlID0gIkVjdWFkb3JpYW4gQW1hem9uOkhhdmUgeW91IGV2ZXIgc2Vuc2VkIF9fPy0tUHJvcG9ydGlvbiBvZiAnWWVzJyBSZXNwb25zZXMgYnkgUXVlc3Rpb24gVHlwZSIsCiAgICB4ID0gIlF1ZXN0aW9uIFR5cGUiLAogICAgeSA9ICJQcm9wb3J0aW9uIG9mICdZZXMnIFJlc3BvbnNlcyIpCmBgYA==